好的,假设我已经构建了一些名为libImmortal.a
and的库libUglyFace.so
。第一个是在~/LakeOfBlood/lib
里面,第二个是装在槽make install
里的/usr/lib
。在奖金我做ldconfig
现在在~/LakeOfBlood
我想编辑CMakeList.txt
。我添加库:
project (LOB)
.
.
.
# (the binary will be built in ~/LakeOfBlood)
link_directories(${LOB_BINARY_DIR}/lib)
.
.
.
target_link_libraries(LakeOfBlood UglyFace Immortal)
但是当我编译ld
时找不到Immortal
我仍然可以通过更改链接:
target_link_libraries(LakeOfBlood UglyFace Immortal)
经过
target_link_libraries(LakeOfBlood UglyFace /home/OftheBeast/LakeOfBlood/Immortal.a)
然后ld
工作。
...但是,是的,有 af* * * * * * “但是”...
当我启动 LakeOfBlood 时,我得到了:
./LakeOfBlood: error while loading shared libraries: libUglyFace.so: cannot open shared object file: No such file or directory
这两个库不是我的,它们带有一个名为OccultGod
. 如果我这样做,ldd OccultGod
我得到:
libUglyFace.so => /home/OfTheBeast/LakeOfBlood/lib/libUglyFace.so (0x0000666)
所以现在,
- 我怎么能说
OccultGod
使用/usr/lib/libUglyFace.so
而不是上面的那个?(通过他自己的CMakeList.txt
) - 我怎样才能解决我
CMakeList.txt
的问题libImmortal.a
- 你能解释一下为什么
LakeOfBlood
看不到吗/usr/lib/libUglyFace.so
?我的意思/usr/lib
是标准路径对吗?然后我认为那里的每个库都会被任何二进制文件自动找到......