[CMake] Undefined reference
Hendrik Sattler
post at hendrik-sattler.de
Fri Nov 4 03:00:08 EDT 2011
Am 03.11.2011 15:51, schrieb Mauricio Klein:
> Thank you Raphael, it worked!
>
> One last question: i've tried to compile my code using static
> linkage, once
> i need my daemon runs in many Linux releases. But, even static, in
> many
> systems my code crashes because the GLIBC version.
>
> My question is: asking for static linkage in CMake can solve this
> problem?
> Or maybe another approach in CMake, where i embed all the needed
> libraries...
>
> Thanks for your attention!
>
> On Thu, Nov 3, 2011 at 12:19 PM, Raphael Kubo da Costa
> <rakuco at freebsd.org>wrote:
>
>> Mauricio Klein
>> <mauricio.klein.msk at gmail.com> writes:
>>
>> > I can compile all my codes without problems, but in the linkage
>> step, i
>> > receive a lot of errors about undefined reference to OpenSSL
>> functions
>> > (yes, my code uses OpenSSL).
>> >
>> > In my own (and ugly :P) Makefile, i use "-lssl" flag in g++
>> compile line.
>> >
>> > My question is: how can i pass this flag in CMake.
>> > Also, i'm not sure if i'm using CMake correctly. Is correctly use
>> "-lssl"
>> > flag in CMake or i need to copy the library to a folder inside my
>> project
>> > and link to this copy?
>>
>> You need to find OpenSSL with `find_package(OpenSSL)' and then,
>> assuming
>> it is found (ie. OPENSSL_FOUND is true), link to its libraries with
>> `target_link_libraries(YOUR_APP ${OPENSSL_LIBRARIES})'.
After the issues with glibc were already mentioned, be also aware that
static linking to openssl is really not recommended. Just look at the
history of security updates to openssl. Do you really want to ship a new
executable on every update of any statically linked library? Probably
not.
The only good reason these days to link statically is maybe some
performance hit shared libraries.
HS
More information about the CMake
mailing list