【发布时间】:2013-10-14 03:17:54
【问题描述】:
好的,假设我已经构建了一些名为 libImmortal.a 和 libUglyFace.so 的库。第一个在~/LakeOfBlood/lib 中,第二个在/usr/lib 中通过make install 安装。作为奖励,我做了一个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 工作。
...BUTT,是的,有一个 f* * * * * * “但是”...
当我启动 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是标准路径吗?然后我认为那里的每个库都会被任何二进制文件自动找到......
【问题讨论】: