How to use Static Skia Libraries in Shared Library in Linux

799 views
Skip to first unread message

stevek...@gmail.com

unread,
Aug 16, 2015, 8:48:14 AM8/16/15
to skia-discuss

When I try to use the static Skia Libs in my Shared Lib, the below error appears:

===========
/usr/bin/ld: [PATH_OF_SKIA]/out64/Debug/libskia_core.a(core.SkBitmap.o): relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC
[PATH_OF_SKIA]/out64/Debug/libskia_core.a: error adding symbols: Bad value
collect2: error: ld returned 1 exit status
===========

I'm sure that the static Skia Libs built correctly, since I started the SampleApp and it worked fine.

I searched about solving this problem on Google, but I only found that the solution is to build the Skia Libs as Shared Libs (NOT static).

I can't use the shared version of the Skia in my shared Lib. Is there a solution for using the Static Skia Libs in my Shared Lib?

I'm using Fedora 21 64-bits machine and the GCC version is 4.9.2-6.

Mike Klein

unread,
Aug 17, 2015, 10:27:28 AM8/17/15
to skia-discuss
Sounds like you need to compile with -fPIC.  Shared libraries usually need position-independent code.

We have a GYP flag to control this, skia_pic.  E.g., run
    $ ./gyp_skia -Dskia_pic=1

--
You received this message because you are subscribed to the Google Groups "skia-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to skia-discuss...@googlegroups.com.
To post to this group, send email to skia-d...@googlegroups.com.
Visit this group at http://groups.google.com/group/skia-discuss.
For more options, visit https://groups.google.com/d/optout.

stevek...@gmail.com

unread,
Aug 17, 2015, 11:19:28 AM8/17/15
to skia-discuss

Thanks Mike for the reply

I added the -Dskia_pic=1 flag as you suggested, and the error no longer appears.

However, adding this flag caused undefined reference errors such as:

========================
[PATH_OF_DUMMY_LIB_TEST]/DummyTest.o: In function `SkColorTypeBytesPerPixel':
[PATH_OF_SKIA]/include/core/SkImageInfo.h:102: undefined reference to `SkDebugf(char const*, ...)'
[PATH_OF_SKIA]/out64/Debug/libskia_core.a(core.SkBitmap.o): In function `SkColorSetARGBInline':
[PATH_OF_SKIA]/include/core/SkColor.h:34: undefined reference to `SkDebugf(char const*, ...)'
[PATH_OF_SKIA]/out64/Debug/libskia_core.a(core.SkBitmap.o): In function `SkMulS16':
[PATH_OF_SKIA]/include/core/SkMath.h:178: undefined reference to `SkDebugf(char const*, ...)'
[PATH_OF_SKIA]/include/core/SkMath.h:179: undefined reference to `SkDebugf(char const*, ...)'
[PATH_OF_SKIA]/out64/Debug/libskia_core.a(core.SkBitmap.o): In function `SkMulDiv255Round':
[PATH_OF_SKIA]/include/core/SkMath.h:204: undefined reference to `SkDebugf(char const*, ...)'
[PATH_OF_SKIA]/out64/Debug/libskia_core.a(core.SkColorTable.o): In function `SkColorTable::~SkColorTable()':
[PATH_OF_SKIA]/src/core/SkColorTable.cpp:36: undefined reference to `sk_free(void*)'
[PATH_OF_SKIA]/skia/out64/Debug/libskia_core.a(core.SkColorTable.o): In function `operator()':
[PATH_OF_SKIA]/src/core/SkColorTable.cpp:48: undefined reference to `sk_malloc_throw(unsigned long)
========================

These are some of the errors, but the rest errors are the same.

My Dummy Lib contains the following code:
===============
int main()
{
   SkBitmap skBitmap;
   return 0;
}
===============

Mike Klein

unread,
Aug 17, 2015, 11:50:31 AM8/17/15
to skia-discuss
I think you need to link in some more .a files.  Our GYP files create zillions of little .a files for static builds.  E.g. SkDebugf is probably found in libskia_ports.a

--

stevek...@gmail.com

unread,
Aug 18, 2015, 9:54:10 AM8/18/15
to skia-discuss

Hi Mike,

Thanks again for the help. I added all skia static Libs I could find (47 Skia Libs listed below), but I still getting some "undefined reference" errors. Here are the Libs in my makefile:
==============================
Skia Libs:
libpng_static.a, libskia_animator.a, libskia_codec.a, libskia_core.a, libskia_effects.a, libskia_images.a, libskia_opts.a, libskia_opts_sse41.a, libskia_opts_ssse3.a, libskia_pdf.a
libskia_ports.a, libskia_sfnt.a, libskia_skgpu.a, libskia_skgputest.a, libskia_svg.a, libskia_utils.a, libskia_views.a, libskia_xml.a, libskia_xps.a, libcrash_handler.a, libetc1.a, libexperimental.a
libflags.a, libflags_common.a, libgiflib.a, libicuuc.a, libjpeg.a, libjsoncpp.a, liblua.a, libnanomsg.a, libpicture_renderer.a, libpicture_utils.a, libpng_static_neon.a, libproc_stats.a, libresources.a
libsfntly.a, libskflate.a, libSkKTX.a, libsk_tool_utils.a, libtest_public_includes.a, libtimer.a, libviews_animated.a, libwebp_dec.a, libwebp_demux.a, libwebp_dsp.a, libwebp_enc.a, libwebp_utils.a

Other Libs:
libopengl32 libpng libfontconfig libfreetype libglui libglut libglusterfs
==============================

Here are some of the errors I'm getting now, just to give you an idea of what I'm going through:
+===========================================+
[PATH_OF_SKIA]/out64/Debug/libskia_ports.a(ports.SkGlobalInitialization_default.o): In function `SkPrivateEffectInitializer::Init()':
[PATH_OF_SKIA]/src/ports/SkGlobalInitialization_default.cpp:67: undefined reference to `SkArcToPathEffect::CreateProc(SkReadBuffer&)'
[PATH_OF_SKIA]/src/ports/SkGlobalInitialization_default.cpp:69: undefined reference to `SkBitmapSource::CreateProc(SkReadBuffer&)'
[PATH_OF_SKIA]/src/ports/SkGlobalInitialization_default.cpp:70: undefined reference to `SkBlurDrawLooper::CreateProc(SkReadBuffer&)'
[PATH_OF_SKIA]/src/ports/SkGlobalInitialization_default.cpp:71: undefined reference to `SkBlurImageFilter::CreateProc(SkReadBuffer&)'
[PATH_OF_SKIA]/src/ports/SkGlobalInitialization_default.cpp:72: undefined reference to `SkColorCubeFilter::CreateProc(SkReadBuffer&)'
[PATH_OF_SKIA]/src/ports/SkGlobalInitialization_default.cpp:73: undefined reference to `SkColorMatrixFilter::CreateProc(SkReadBuffer&)'
[PATH_OF_SKIA]/src/ports/SkGlobalInitialization_default.cpp:75: undefined reference to `SkComposePathEffect::CreateProc(SkReadBuffer&)'
[PATH_OF_SKIA]/src/ports/SkGlobalInitialization_default.cpp:77: undefined reference to `SkCornerPathEffect::CreateProc(SkReadBuffer&)'
[PATH_OF_SKIA]/src/ports/SkGlobalInitialization_default.cpp:78: undefined reference to `SkDashPathEffect::CreateProc(SkReadBuffer&)'
[PATH_OF_SKIA]/src/ports/SkGlobalInitialization_default.cpp:79: undefined reference to `SkDilateImageFilter::CreateProc(SkReadBuffer&)'
[PATH_OF_SKIA]/src/ports/SkGlobalInitialization_default.cpp:80: undefined reference to `SkDiscretePathEffect::CreateProc(SkReadBuffer&)'
[PATH_OF_SKIA]/src/ports/SkGlobalInitialization_default.cpp:81: undefined reference to `SkDisplacementMapEffect::CreateProc(SkReadBuffer&)'
[PATH_OF_SKIA]/src/ports/SkGlobalInitialization_default.cpp:82: undefined reference to `SkDropShadowImageFilter::CreateProc(SkReadBuffer&)'
[PATH_OF_SKIA]/src/ports/SkGlobalInitialization_default.cpp:83: undefined reference to `SkEmbossMaskFilter::CreateProc(SkReadBuffer&)'
[PATH_OF_SKIA]/src/ports/SkGlobalInitialization_default.cpp:85: undefined reference to `SkErodeImageFilter::CreateProc(SkReadBuffer&)'
[PATH_OF_SKIA]/src/ports/SkGlobalInitialization_default.cpp:86: undefined reference to `SkLayerDrawLooper::CreateProc(SkReadBuffer&)'
[PATH_OF_SKIA]/src/ports/SkGlobalInitialization_default.cpp:87: undefined reference to `SkLayerRasterizer::CreateProc(SkReadBuffer&)'
[PATH_OF_SKIA]/src/ports/SkGlobalInitialization_default.cpp:88: undefined reference to `SkLerpXfermode::CreateProc(SkReadBuffer&)'
[PATH_OF_SKIA]/src/ports/SkGlobalInitialization_default.cpp:89: undefined reference to `SkLocalMatrixShader::CreateProc(SkReadBuffer&)'
[PATH_OF_SKIA]/src/ports/SkGlobalInitialization_default.cpp:90: undefined reference to `SkLumaColorFilter::CreateProc(SkReadBuffer&)'
[PATH_OF_SKIA]/src/ports/SkGlobalInitialization_default.cpp:91: undefined reference to `SkPath1DPathEffect::CreateProc(SkReadBuffer&)'
[PATH_OF_SKIA]/src/ports/SkGlobalInitialization_default.cpp:92: undefined reference to `SkLine2DPathEffect::CreateProc(SkReadBuffer&)'
[PATH_OF_SKIA]/src/ports/SkGlobalInitialization_default.cpp:93: undefined reference to `SkModeColorFilter::CreateProc(SkReadBuffer&)'
[PATH_OF_SKIA]/src/ports/SkGlobalInitialization_default.cpp:94: undefined reference to `SkPath2DPathEffect::CreateProc(SkReadBuffer&)'
[PATH_OF_SKIA]/src/ports/SkGlobalInitialization_default.cpp:95: undefined reference to `SkPerlinNoiseShader::CreateProc(SkReadBuffer&)'
[PATH_OF_SKIA]/src/ports/SkGlobalInitialization_default.cpp:96: undefined reference to `SkPictureImageFilter::CreateProc(SkReadBuffer&)'
[PATH_OF_SKIA]/src/ports/SkGlobalInitialization_default.cpp:98: undefined reference to `SkPixelXorXfermode::CreateProc(SkReadBuffer&)'
[PATH_OF_SKIA]/src/ports/SkGlobalInitialization_default.cpp:99: undefined reference to `SkRectShaderImageFilter::CreateProc(SkReadBuffer&)'
[PATH_OF_SKIA]/src/ports/SkGlobalInitialization_default.cpp:100: undefined reference to `SkSumPathEffect::CreateProc(SkReadBuffer&)'
[PATH_OF_SKIA]/src/ports/SkGlobalInitialization_default.cpp:101: undefined reference to `SkTileImageFilter::CreateProc(SkReadBuffer&)'
[PATH_OF_SKIA]/src/ports/SkGlobalInitialization_default.cpp:103: undefined reference to `SkXfermodeImageFilter::CreateProc(SkReadBuffer&)'
[PATH_OF_SKIA]/src/ports/SkGlobalInitialization_default.cpp:104: undefined reference to `SkMagnifierImageFilter::CreateProc(SkReadBuffer&)'
[PATH_OF_SKIA]/src/ports/SkGlobalInitialization_default.cpp:105: undefined reference to `SkMatrixConvolutionImageFilter::CreateProc(SkReadBuffer&)'
[PATH_OF_SKIA]/src/ports/SkGlobalInitialization_default.cpp:107: undefined reference to `SkOffsetImageFilter::CreateProc(SkReadBuffer&)'
[PATH_OF_SKIA]/src/ports/SkGlobalInitialization_default.cpp:108: undefined reference to `SkComposeImageFilter::CreateProc(SkReadBuffer&)'
[PATH_OF_SKIA]/src/ports/SkGlobalInitialization_default.cpp:109: undefined reference to `SkMergeImageFilter::CreateProc(SkReadBuffer&)'
[PATH_OF_SKIA]/src/ports/SkGlobalInitialization_default.cpp:110: undefined reference to `SkColorFilterImageFilter::CreateProc(SkReadBuffer&)'
[PATH_OF_SKIA]/src/ports/SkGlobalInitialization_default.cpp:111: undefined reference to `SkDownSampleImageFilter::CreateProc(SkReadBuffer&)'
[PATH_OF_SKIA]/src/ports/SkGlobalInitialization_default.cpp:113: undefined reference to `SkArithmeticMode::InitializeFlattenables()'
[PATH_OF_SKIA]/src/ports/SkGlobalInitialization_default.cpp:114: undefined reference to `SkBlurMaskFilter::InitializeFlattenables()'
[PATH_OF_SKIA]/src/ports/SkGlobalInitialization_default.cpp:116: undefined reference to `SkGradientShader::InitializeFlattenables()'
[PATH_OF_SKIA]/src/ports/SkGlobalInitialization_default.cpp:117: undefined reference to `SkLightingImageFilter::InitializeFlattenables()'
[PATH_OF_SKIA]/src/ports/SkGlobalInitialization_default.cpp:118: undefined reference to `SkTableColorFilter::InitializeFlattenables()'
[PATH_OF_SKIA]/out64/Debug/libskia_ports.a(ports.SkDiscardableMemory_none.o): In function `SkDiscardableMemory::Create(unsigned long)':
[PATH_OF_SKIA]/src/ports/SkDiscardableMemory_none.cpp:12: undefined reference to `SkGetGlobalDiscardableMemoryPool()'
[PATH_OF_SKIA]/out64/Debug/libskia_ports.a(ports.SkFontMgr_fontconfig.o): In function `SkFontMgr_fontconfig::GetFamilyNames(_FcConfig*)':
[PATH_OF_SKIA]/src/ports/SkFontMgr_fontconfig.cpp:564: undefined reference to `SkDataTable::NewCopyArrays(void const* const*, unsigned long const*, int)'
[PATH_OF_SKIA]/out64/Debug/libskia_ports.a(ports.SkFontMgr_fontconfig.o): In function `char const* SkDataTable::atT<char const>(int, unsigned long*) const':
[PATH_OF_SKIA]/include/core/SkDataTable.h:52: undefined reference to `SkDataTable::at(int, unsigned long*) const'
[PATH_OF_SKIA]/out64/Debug/libskia_ports.a(ports.SkFontHost_FreeType.o): In function `SkTypeface_FreeType::onGetAdvancedTypefaceMetrics(SkTypeface::PerGlyphInfo, unsigned int const*, unsigned int) const':
[PATH_OF_SKIA]/src/ports/SkFontHost_FreeType.cpp:603: undefined reference to `SkAdvancedTypefaceMetrics::AdvanceMetric<short>* skia_advanced_typeface_metrics_utils::appendRange<short>(SkAutoTDelete<SkAdvancedTypefaceMetrics::AdvanceMetric<short> >*, int)'
[PATH_OF_SKIA]/src/ports/SkFontHost_FreeType.cpp:607: undefined reference to `void skia_advanced_typeface_metrics_utils::finishRange<short>(SkAdvancedTypefaceMetrics::AdvanceMetric<short>*, int, SkAdvancedTypefaceMetrics::AdvanceMetric<short>::MetricType)'
[PATH_OF_SKIA]/src/ports/SkFontHost_FreeType.cpp:609: undefined reference to `SkAdvancedTypefaceMetrics::AdvanceMetric<short>* skia_advanced_typeface_metrics_utils::appendRange<short>(SkAutoTDelete<SkAdvancedTypefaceMetrics::AdvanceMetric<short> >*, int)'
[PATH_OF_SKIA]/src/ports/SkFontHost_FreeType.cpp:624: undefined reference to `void skia_advanced_typeface_metrics_utils::finishRange<short>(SkAdvancedTypefaceMetrics::AdvanceMetric<short>*, int, SkAdvancedTypefaceMetrics::AdvanceMetric<short>::MetricType)'
[PATH_OF_SKIA]/src/ports/SkFontHost_FreeType.cpp:631: undefined reference to `SkAdvancedTypefaceMetrics::AdvanceMetric<short>* skia_advanced_typeface_metrics_utils::getAdvanceData<short, FT_FaceRec_*>(FT_FaceRec_*, int, unsigned int const*, unsigned int, bool (*)(FT_FaceRec_*, int, short*))'
[PATH_OF_SKIA]/out64/Debug/libskia_ports.a(ports.SkFontHost_FreeType.o): In function `SkTypeface_FreeType::Scanner::scanFont(SkStream*, int, SkString*, SkFontStyle*, bool*, SkSTArray<4, SkTypeface_FreeType::Scanner::AxisDefinition, true>*) const':
[PATH_OF_SKIA]/src/ports/SkFontHost_FreeType.cpp:1720: undefined reference to `SkStrLCSearch(char const* const*, int, char const*, unsigned long)'
[PATH_OF_SKIA]/out64/Debug/libskia_skgpu.a(skgpu.SkGr.o): In function `load_etc1_texture':
[PATH_OF_SKIA]/src/gpu/SkGr.cpp:304: undefined reference to `etc1_pkm_is_valid'
[PATH_OF_SKIA]/src/gpu/SkGr.cpp:305: undefined reference to `etc1_pkm_get_width'
[PATH_OF_SKIA]/src/gpu/SkGr.cpp:306: undefined reference to `etc1_pkm_get_height'
[PATH_OF_SKIA]/src/gpu/SkGr.cpp:318: undefined reference to `SkKTXFile::is_ktx(unsigned char const*)'
[PATH_OF_SKIA]/src/gpu/SkGr.cpp:322: undefined reference to `SkKTXFile::isCompressedFormat(SkTextureCompressor::Format) const'
[PATH_OF_SKIA]/out64/Debug/libskia_skgpu.a(skgpu.SkGr.o): In function `load_yuv_texture':
[PATH_OF_SKIA]/src/gpu/SkGr.cpp:357: undefined reference to `SkYUVPlanesCache::FindAndRef(unsigned int, SkYUVPlanesCache::Info*, SkResourceCache*)'
[PATH_OF_SKIA]/src/gpu/SkGr.cpp:397: undefined reference to `SkYUVPlanesCache::Add(unsigned int, SkCachedData*, SkYUVPlanesCache::Info*, SkResourceCache*)'
[PATH_OF_SKIA]/out64/Debug/libskia_skgpu.a(skgpu.SkGr.o): In function `SkKTXFile::SkKTXFile(SkData*)':
[PATH_OF_SKIA]/third_party/ktx/ktx.h:42: undefined reference to `SkKTXFile::readKTXFile(unsigned char const*, unsigned long)'
[PATH_OF_SKIA]/out64/Debug/libskia_skgpu.a(skgpu.GrGLCreateNativeInterface_glx.o): In function `glx_get':
[PATH_OF_SKIA]/src/gpu/gl/glx/GrGLCreateNativeInterface_glx.cpp:17: undefined reference to `glXGetCurrentContext'
[PATH_OF_SKIA]/src/gpu/gl/glx/GrGLCreateNativeInterface_glx.cpp:18: undefined reference to `glXGetProcAddress'
[PATH_OF_SKIA]/out64/Debug/libskia_skgpu.a(skgpu.GrGLCreateNativeInterface_glx.o): In function `GrGLCreateNativeInterface()':
[PATH_OF_SKIA]/src/gpu/gl/glx/GrGLCreateNativeInterface_glx.cpp:22: undefined reference to `glXGetCurrentContext'
[PATH_OF_SKIA]/out64/Debug/libskia_skgpu.a(skgpu.GrFontScaler.o): In function `GrFontScaler::getPackedGlyphDFImage(unsigned int, int, int, void*)':
[PATH_OF_SKIA]/src/gpu/GrFontScaler.cpp:218: undefined reference to `SkGenerateDistanceFieldFromA8Image(unsigned char*, unsigned char const*, int, int, unsigned long)'
[PATH_OF_SKIA]/src/gpu/GrFontScaler.cpp:224: undefined reference to `SkGenerateDistanceFieldFromBWImage(unsigned char*, unsigned char const*, int, int, unsigned long)'
[PATH_OF_SKIA]/out64/Debug/libskia_skgpu.a(skgpu.GrSWMaskHelper.o): In function `GrSWMaskHelper::toSDF(unsigned char*)':
[PATH_OF_SKIA]/src/gpu/GrSWMaskHelper.cpp:317: undefined reference to `SkGenerateDistanceFieldFromA8Image(unsigned char*, unsigned char const*, int, int, unsigned long)'
[PATH_OF_SKIA]/out64/Debug/libskia_skgpu.a(skgpu.GrAADistanceFieldPathRenderer.o): In function `AADistanceFieldPathBatch::addPathToAtlas(GrBatchTarget*, GrGeometryProcessor const*, GrPipeline const*, AADistanceFieldPathBatch::FlushInfo*, GrBatchAtlas*, GrAADistanceFieldPathRenderer::PathData*, SkPath const&, SkStrokeRec const&, bool, unsigned int, float)':
[PATH_OF_SKIA]/src/gpu/GrAADistanceFieldPathRenderer.cpp:408: undefined reference to `SkGenerateDistanceFieldFromA8Image(unsigned char*, unsigned char const*, int, int, unsigned long)'
[PATH_OF_SKIA]/out64/Debug/libskia_utils.a(utils.SkRTConf.o): In function `SkTDict<SkTDArray<SkRTConfBase*>*>::find_index(char const*, unsigned long) const':
[PATH_OF_SKIA]/include/core/SkTDict.h:139: undefined reference to `SkStrSearch(char const* const*, int, char const*, unsigned long, unsigned long)'
[PATH_OF_SKIA]/out64/Debug/libskia_utils.a(utils.SkTextureCompressor.o): In function `compress_etc1_565':
[PATH_OF_SKIA]/src/utils/SkTextureCompressor.cpp:28: undefined reference to `etc1_encode_image'
[PATH_OF_SKIA]/out64/Debug/libskia_utils.a(utils.SkTextureCompressor.o): In function `SkTextureCompressor::GetBlockDimensions(SkTextureCompressor::Format, int*, int*, bool)':
[PATH_OF_SKIA]/src/utils/SkTextureCompressor.cpp:43: undefined reference to `SkTextureCompressorGetPlatformDims(SkTextureCompressor::Format, int*, int*)'
[PATH_OF_SKIA]/out64/Debug/libskia_utils.a(utils.SkTextureCompressor.o): In function `SkTextureCompressor::CompressBufferToFormat(unsigned char*, unsigned char const*, SkColorType, int, int, unsigned long, SkTextureCompressor::Format, bool)':
[PATH_OF_SKIA]/src/utils/SkTextureCompressor.cpp:126: undefined reference to `SkTextureCompressorGetPlatformProc(SkColorType, SkTextureCompressor::Format)'
[PATH_OF_SKIA]/out64/Debug/libskia_utils.a(utils.SkTextureCompressor.o): In function `SkTextureCompressor::DecompressBufferFromFormat(unsigned char*, int, unsigned char const*, int, int, SkTextureCompressor::Format)':
[PATH_OF_SKIA]/src/utils/SkTextureCompressor.cpp:234: undefined reference to `etc1_decode_image'
+===========================================+

Is there any document or list or a way to know what are the exact libs I need to link in my simple Library?

I'm sorry for disturbing you, but I searched all over the Internet for the past couple of days to solve these problems, but I'm still stuck.

Mike Klein

unread,
Aug 18, 2015, 10:29:21 AM8/18/15
to skia-discuss
I think this is actually a problem of link order.  As far as I can tell you've got the right .a files, but they probably need to be linked as one unit.  I imagine they're so interdependent that there is no linearize their dependencies.

I think you may need to use --start-group / --end-group around the .a files on your link command to link them all as if they were one .a.

E.g.  gcc foo.a bar.a ... -->  gcc --start-group foo.a bar.a --end-group ...

Once you've done that, I think there are a lot of libraries you might consider removing from your list:
  - libpng_static.a
  - libskia_animator.a
  - libskia_skgputest.a
  - libcrash_handler.a
  - libexperimental.a
  - libflags.a
  - libflags_common.a
  - libgiflib.a
  - libicuuc.a
  - libjpeg.a
  - libjsoncpp.a
  - anything not libskia_foo.a

As you might imagine, you are not building Skia in a way that anyone else does.  Our build system is mostly designed for development and testing, and it's notably quite poor for actually using Skia.  Big users of Skia like Chrome and Android build it with their own build systems, not with our .gyp files.  The majority of those .a files you're linking are code used to test Skia, not part of Skia itself.  They're also a completely artificial side effect of the build system we use, not any real intentional separation of libraries.

--

stevek...@gmail.com

unread,
Aug 19, 2015, 3:42:43 AM8/19/15
to skia-discuss
Hi Mike,

The --start-group & --end-group solved my problems.

I used the test libraries just to make sure I'm linking all needed Libs, since I thought the errors is because of missing Libs.

I only used the below Libs, and I was able to build my shared Lib:
=======================
libskia_core.a libskia_effects.a libskia_images.a libskia_opts.a libskia_opts_sse41.a libskia_opts_ssse3.a
libskia_ports.a libskia_sfnt.a libskia_skgpu.a libskia_utils.a libetc1.a libSkKTX.a
=======================

Anyway, thanks for the help, you did a great support.

Mike Klein

unread,
Aug 19, 2015, 7:08:03 AM8/19/15
to skia-discuss
Great!  Glad it's working for you.

--
Reply all
Reply to author
Forward
0 new messages