[CMake] How to link archives (.a) into shared object (.so) with cmake ?

houssen houssen at ipgp.fr
Wed Nov 18 03:47:23 EST 2015


You are right, thanks for the tip ! I didn't pay attention and, indeed, 
I set CMAKE_POSITION_INDEPENDENT_CODE after ADD_LIBRARY (I believed it 
could be handled afterwards)

Franck

Le 2015-11-17 13:54, CHEVRIER, Marc a écrit :
> Set of variable CMAKE_POSITION_INDEPENDENT_CODE must be done BEFORE
> add_library (… STATIC…).
>
> Are you sure you re-generate makefiles?
>
> This approach works perfectly for me on Linux with GNU compiler.
>
> Marc
>
>
>
> On 17/11/15 13:48, "CMake on behalf of houssen"
> <cmake-bounces at cmake.org on behalf of houssen at ipgp.fr> wrote:
>
>>Unfortunately, that does not work !... But indeed, for me, it should
>>have ?!...
>>
>>Franck
>>
>>Le 2015-11-17 12:34, CHEVRIER, Marc a écrit :
>>> Hi,
>>>
>>> Shared libraries required position independent code (PIC) for
>>> objects.
>>> By default, in CMake, static libraries objects are not compiled 
>>> with
>>> this mode… So your problem.
>>>
>>> The easiest solution is to add this line to your CMakeLists.txt 
>>> file:
>>> Set (CMAKE_POSITION_INDEPENDENT_CODE ON)
>>>
>>> Marc
>>>
>>>
>>>
>>>
>>> On 17/11/15 11:44, "CMake on behalf of houssen"
>>> <cmake-bounces at cmake.org on behalf of houssen at ipgp.fr> wrote:
>>>
>>>>Hello,
>>>>
>>>>How to link archives (.a) into shared object (.so) with cmake ?
>>>>
>>>>I have an archive:
>>>>ADD_LIBRARY ( myArchive STATIC ${SRC} )
>>>>That I need to link with a shared object:
>>>>ADD_LIBRARY ( mySharedObject SHARED ${SRC} )
>>>>TARGET_LINK_LIBRARIES ( mySharedObject PUBLIC myArchive )
>>>>I get a compilation error that says "you need to compile with -fPIC
>>>> !"
>>>>
>>>>As far as I understand, I need to use "-Wl,--whole-archive" :
>>>>http://stackoverflow.com/questions/7935421/linking-archives-a-into-shared-object-so...
>>>>But I can't figure out how to do that with CMake. Could someone 
>>>> help
>>>> ?
>>>>
>>>>Franck
>>>>--
>>>>
>>>>Powered by www.kitware.com
>>>>
>>>>Please keep messages on-topic and check the CMake FAQ at:
>>>> http://www.cmake.org/Wiki/CMake_FAQ
>>>>
>>>>Kitware offers various services to support the CMake community. For
>>>> more information on each offering, please visit:
>>>>
>>>>CMake Support: http://cmake.org/cmake/help/support.html
>>>>CMake Consulting: http://cmake.org/cmake/help/consulting.html
>>>>CMake Training Courses: http://cmake.org/cmake/help/training.html
>>>>
>>>>Visit other Kitware open-source projects at
>>>> http://www.kitware.com/opensource/opensource.html
>>>>
>>>>Follow this link to subscribe/unsubscribe:
>>>>http://public.kitware.com/mailman/listinfo/cmake
>>
>>--
>>
>>Powered by www.kitware.com
>>
>>Please keep messages on-topic and check the CMake FAQ at: 
>> http://www.cmake.org/Wiki/CMake_FAQ
>>
>>Kitware offers various services to support the CMake community. For 
>> more information on each offering, please visit:
>>
>>CMake Support: http://cmake.org/cmake/help/support.html
>>CMake Consulting: http://cmake.org/cmake/help/consulting.html
>>CMake Training Courses: http://cmake.org/cmake/help/training.html
>>
>>Visit other Kitware open-source projects at 
>> http://www.kitware.com/opensource/opensource.html
>>
>>Follow this link to subscribe/unsubscribe:
>>http://public.kitware.com/mailman/listinfo/cmake



More information about the CMake mailing list