我找到了一个库,libjson
,我试图建立一个共享库并在一个项目中使用。建筑很简单,固定的Makefile错误后,如何重命名共享库以避免同名冲突?
# SHARED=1 make install
将编译和/usr/lib
安装.so
。问题是我的系统(Arch Linux)已经有一个名为libjson
的库,Makefile为我覆盖了这个库! Arch的库被安装为依赖项,所以它不能被替换。如果他们有一个名为libjson
的库,那么其他发行版可能会有类似的问题。
我该怎么办?我可以重新命名图书馆(libjson-mine
或其他),但动态链接离魔法只有几步之遥,所以我不知道这是否会破坏某些东西。 如何重命名图书馆?
另一种选择是将库的源代码放到我的当前项目的源代码树,并有建设者使静态库,而不是。 (很显然,这会让我的代码存储库变得更加混乱,因此不太合适)。如果我走这条路线,我需要让链接器更喜欢我的libjson.a
,而不是搜索/usr/lib
以获得“合适”(读取:错误)库。 如何让链接器更喜欢我的版本?
或者,有没有第三种选择,我不知道?
一个更好的想法是用通常的'/ usr/local /'前缀来配置和安装你的软件包,这样你的'libjson'会进入'/ usr/local/LIB/libjson.so';另外,了解有关'LD_LIBRARY_PATH'环境变量和'/ etc/ld.so.conf'和'ldconfig'命令的更多信息。 –