2017-05-25 192 views
0

我正在构建一个使用cmake的项目。cmake项目生成错误,共享库依赖于另一个

该项目使用三个共享库.so文件。

在CMakeLists.txt文件中,我添加了将共享库链接到可执行文件的这些行。

project (lwm2mclient) 

LINK_DIRECTORIES(/home/mraa-master-built/build/src) 
LINK_DIRECTORIES(/home/libi2capi) 
LINK_DIRECTORIES(/home/libtca6424a) 
target_link_libraries (lwm2mclient libmraa.so m libi2capi.so libtca6424a.so) 

然而,共享库libtca6424a.so之一取决于libi2capi.so即它使用在它中定义的方法。

因此,当我构建cmake项目时,出现如下错误消息,说.so文件找不到在.so文件libtca6424a.so中定义的方法。

有人可以提出一个解决方案吗?

/../../lib/libtca6424a.so: undefined reference to `i2c_write_byte_data' 

回答

0

请尝试

target_link_libraries (-Wl,--start-group lwm2mclient libmraa.so m libi2capi.so libtca6424a.so -Wl,--end-group) 

或更改库的顺序