[CMake] problems linking with g++ on Ubuntu

Bogdan Cristea cristeab at gmail.com
Mon Sep 24 11:31:30 EDT 2012


On Monday 24 September 2012 08:28:26 Davis Ford wrote:
> Hi, I have a project that I'm able to build fine on Mac OS with CMake, but
> when I check same project out on Ubuntu 12.04, I'm getting undefined
> reference errors at link time.
> 
> Here's the relevant section of the CMakeLists.txt file, and make VERBOSE=1
> output for both Mac OS X (success) and Ubuntu 12.04 (failure)
> 
> https://gist.github.com/3776497
> 
> The specific failure is
> 
> In function `Comm_Create':
> Comm.c:(.text+0x42): undefined reference to `zctx_new'
> 
> This function is defined in libczmq.a (which is being linked in the Make
> output)
> 
> $ nm /usr/local/lib/libczmq.a  | grep zctx_new
> 00000010 T zctx_new
>          U zctx_new
>          U zctx_new
>          U zctx_new
>          U zctx_new
>          U zctx_new
>          U zctx_new
>          U zctx_new
> 
> 
> The other failure is
> 
> Comm.c:(.text+0x5c): undefined reference to `zsocket_new'
> 
> This function is also defined in libczmq.a
> 
> $ nm /usr/local/lib/libczmq.a  | grep zsocket_new
>          U zsocket_new
>          U zsocket_new
>          U zsocket_new
> 00000000 T zsocket_new
>          U zsocket_new
>          U zsocket_new
>          U zsocket_new
> 
> What am I missing here?

When linking with static libraries the order is comportant for gcc compiler. 
Not sure if this is also valid for MAC OS X, but you should check this.

-- 
Bogdan


More information about the CMake mailing list