C++ CMake无法生成安全链接器搜索路径-yocto 2.4
我有两个yocto软件包,可以在yocto 2.0.2上使用gcc 5.4、cmake 3.6.1成功编译,但我在yocto 2.4上面临以下问题:gcc 6.3、cmake 3.6.1 经过一些研究,我发现yocto改变了sysroot结构(每个包的sysroot,而不是一个普通的sysroot)。 错误如下所示:C++ CMake无法生成安全链接器搜索路径-yocto 2.4,c++,gcc,cmake,linker,yocto,C++,Gcc,Cmake,Linker,Yocto,我有两个yocto软件包,可以在yocto 2.0.2上使用gcc 5.4、cmake 3.6.1成功编译,但我在yocto 2.4上面临以下问题:gcc 6.3、cmake 3.6.1 经过一些研究,我发现yocto改变了sysroot结构(每个包的sysroot,而不是一个普通的sysroot)。 错误如下所示: CMake Warning at src/mytest/CMakeLists.txt:71 (add_executable): Cannot generate a safe l
CMake Warning at src/mytest/CMakeLists.txt:71 (add_executable):
Cannot generate a safe linker search path for target mytest because
files in some directories may conflict with libraries in implicit
directories:
link library [libpthread.so] in /local/build2/tmp/work/corei7-64-poky-linux/mytest/recipe-sysroot/usr/lib may be hidden by files in:
/local/build2/tmp/work/corei7-64-poky-linux/mylib/recipe-sysroot/usr/lib
Some of these libraries may not be found correctly.
导致链接错误:ld:找不到/lib/libpthread.so.0
我在一些cmake生成的文件中观察到,mylib包使用硬编码的pkg名称导出其库,稍后将由测试pkg使用:
set_target_properties(mylib PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "/usr/include/;/{_IMPORT_PREFIX}/include"
INTERFACE_LINK_LIBRARIES "-lpthread; mylib; /local/build2/tmp/work/corei7-64-poky-linux/mylib/recipe-sysroot/usr/lib/libpthread.so;"
)
有没有办法避免这种重复?或者从cmake生成的文件中删除完整路径 您能否显示mylib的
target\u link\u libraries()
命令?为什么两次提到pthread
(一次使用相对路径,一次使用绝对路径)?请注意,从2.4 Yocto版本开始,共享tmp/sysroot不再存在