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

时间:2014-10-16 23:19:42

标签: linux ubuntu gcc openssl ld

我正在编译一个链接到Debian / Ubuntu中libssl.a附带的OpenSSL静态库libcrypto.alibssl-dev的包。但是,这些文件的实际位置取决于手头的架构和分布。

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

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

然而,如果这些目录不存在,这会给出一堆警告,并且可能仍然无法正常工作。

1 个答案:

答案 0 :(得分:4)

如果您确定,您的用户使用aptitude作为包管理器,这是Debian / Ubuntu的默认设置,而不是使用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

我不知道其他任何方式并怀疑是否存在。