在Linux中查找静态系统库的路径

9

我正在编译一个与OpenSSL静态库libssl.alibcrypto.a链接的软件包,这些库文件包含在Debian/Ubuntu的libssl-dev中。然而,这些文件的实际位置取决于所使用的架构和发行版。

是否有一种方法或环境变量,我可以在Makefile中使用,以便为链接器提供正确的系统目录路径,以便使用静态库?目前我正在使用以下内容:

-L/usr/lib/x86_64-linux-gnu/ -L/usr/lib/i686-linux-gnu/ -lssl -lcrypto

然而,如果这些目录不存在,这将会产生一堆警告,并且可能仍然不能正常工作。
2个回答

8
如果你确定你的用户正在使用Debian/Ubuntu默认的aptitude包管理器,那么你可以使用apt-file来定位库文件。
$ apt-file update
$ LIBSSL_PATH=`apt-file list libssl-dev | grep libssl.a | awk '{ print $2 }'`
$ LIBCRYPTO_PATH=`apt-file list libssl-dev | grep libcrypto.a | awk '{ print $2 }'`

接下来,您可以使用它们。例如,在我的机器上:

$ echo $LIBSSL_PATH
/usr/lib/libssl.a

我不知道其他方法是否存在,但我确定这是唯一的方法。


4

我在我的Ubuntu机器上也遇到了同样的问题。 通过使用以下命令,我成功找到了该库。

sudo find libssl.a / | grep libssl.a

Ubuntu 的默认位置是。

/usr/lib/x86_64-linux-gnu/libssl.a

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接