好吧,假设我已经构建了一些名为libImmortal.a
和libUglyFace.so
的库。第一个位于~/LakeOfBlood/lib
,第二个位于make install
的{{1}}。在奖金中我做/usr/lib
现在在ldconfig
我要修改~/LakeOfBlood
。我添加了libs:
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)
有效。
......但是,有一个f * * * * * *“但是”......
当我开始使用LakeOfBlood时,我得到了:
ld
两个库不是我的,它们带有一个名为./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
是标准路径吗?然后我认为那里的每个库都会被任何二进制文件自动找到... 答案 0 :(得分:0)
target_link_libraries(OccultGod /usr/lib/libUglyFace.so)
T
首都做/home/OftheBeast
吗?make install
您的项目,要么不要在target_link_libraries()
中使用目标名称。