【发布时间】:2020-10-13 09:03:26
【问题描述】:
我在我的项目中使用 cmake。
CMakeLists.txt 代码为:
set( GS7_INCLUDE_DIRS "${EXTERNAL_PATH}/ds_sdk/SDK_GS7.0/include" CACHE PATH "SDK GS7.0 include directory" )
set( GS7_LIBRARIES "${EXTERNAL_PATH}/ds_sdk/SDK_GS7.0/lib/linux/x64/gcc49/libdsDriverGCC49.so" "${EXTERNAL_PATH}/ds_sdk/SDK_GS7.0/lib/linux/x64/gcc49/libdsUtilGCC49.so" CACHE FILEPATH "SDK GS7.0 libdsDriver full path" )
...
add_executable( FxLibLoader ... )
...
target_link_libraries( FxLibLoader
"${GS7_LIBRARIES}"
...
)
当我执行cmake --build时,最终的链接命令是
c++ -g CMakeFiles/FxLibLoader.dir/FxLibLoader.cpp.o CMakeFiles/FxLibLoader.dir/FxLogger.cpp.o CMakeFiles/FxLibLoader.dir/mtoProto.pb.cc.o CMakeFiles/FxLibLoader.dir/Stats.cpp .o -o FxLibLoader -L/mnt/e/Desarrollo/sandbox_MTO/externalLibs/ds_sdk/SDK_GS7.0/lib/linux/x64/gcc49 -Wl,-rpath,/mnt/e/Desarrollo/PYMX_II/Mto/MtoApi/调试:/mnt/e/Desarrollo/sandbox_MTO/externalLibs/protobuf/protobuf-3.10.1/linux/lib/x64:/mnt/e/Desarrollo/sandbox_MTO/externalLibs/Hazelcast/linux/lib/x64:/mnt/e /Desarrollo/sandbox_MTO/externalLibs/ds_sdk/SDK_GS7.0/lib/linux/x64/gcc49 /mnt/e/Desarrollo/PYMX_II/Mto/MtoApi/debug/libMtoApi_d.so /mnt/e/Desarrollo/sandbox_MTO/externalLibs/protobuf /protobuf-3.10.1/linux/lib/x64/libprotobuf.so /usr/lib/x86_64-linux-gnu/libpython2.7.so -ldl /mnt/e/Desarrollo/sandbox_MTO/externalLibs/Hazelcast/linux/lib /x64/libHazelcastClient3.12_64.so -ldsDriverGCC49 -ldsUtilGCC49 -lstdc++fs
链接选项好的地方。编译和链接没有错误,但是当我这样做时
>ldd FxLibLoader |找到 fgrep
libdsUtilGCC49.so => 未找到
但是,libdsDriverGCC49.so库,和丢失的在同一个目录下……找到了!
如果我这样做了
LD_LIBRARY_PATH='/mnt/e/Desarrollo/sandbox_MTO/externalLibs/ds_sdk/SDK_GS7.0/lib/linux/x64/gcc49' ldd FxLibLoader |找到 fgrep
我得到空结果,所有库都位于!
- 我做错了什么?
- 我该如何解决?
【问题讨论】:
-
LD_LIBRARY_PATH="$(pwd)" ldd FxLibLoader | fgrep found会输出什么? (或LD_LIBRARY_PATH=/mnt/e/Desarrollo/sandbox_MTO/externalLibs/ds_sdk/SDK_GS7.0/lib/linux/x64/gcc49 ldd ... -
@KamilCuk
LD_LIBRARY_PATH='/mnt/e/Desarrollo/sandbox_MTO/externalLibs/ds_sdk/SDK_GS7.0/lib/linux/x64/gcc49' ldd FxLibLoader | fgrep found执行 empty 结果,所有库都已定位!