是否有Gpg2所使用的库(例如libgpg-error
或libassuan &c.
)的依赖树或图表?
或者有没有其他方法可以确定在其中一个版本更新后需要重新编译哪些版本?例如,我了解到libgpg-error是相当基础的一个库,因此如果它被升级,可能所有其他库都应该重新编译?
有时,当我升级一个库后,我不能编译新版本的Gpg2,因为它试图链接已经删除的旧版本库(我对这些库有非标准的目录结构),并且会崩溃并显示“找不到库”的错误信息。经过一些不是特别彻底的研究后,我认为这是由于从已经构建的其他库中提取特定库版本的信息而导致的。
例如:我最近将libgpg-error升级到1.32。今天我尝试(并失败了(必须手动修复))编译Gpg 2.2.10。
失败的命令如下(简写):
/usr/local/bin/gcc -std=gnu99 ... \
-I/usr/local/libgpg-error-1.31/include \
-I/usr/local/libgpg-error-1.25/include \
-I/usr/local/libgpg-error-1.31/include \
-I/usr/local/libgpg-error-1.32/include \
-o dirmngr dirmngr.o server.o crlcache.o crlfetch.o certcache.o ... \
../common/libcommonpth.a -lresolv \
-L/usr/local/libgpg-error-1.31/lib -lgpg-error \
-L/usr/local/libgpg-error-1.31/lib -lgpg-error \
-L/usr/local/libgpg-error-1.25/lib -lgpg-error \
...
请注意,它试图包含libgpg-error头文件的版本1.25、1.31和1.32,并链接libgpg-error.so的版本1.25和1.31(但不是1.32)。虽然除了当前版本1.32外,磁盘上已经没有这些版本,但在其他一些库编译时它们曾经存在过。