2014-10-16 55 views
2

我在編譯一個包含在Debian/Ubuntu中的libssl-dev附帶的OpenSSL靜態庫libssl.alibcrypto.a的包。但是這些文件的實際位置取決於手頭的體系結構和分佈。在Linux中查找靜態系統庫的路徑

是否有某種方法或環境變量,我可以在Makefile中使用,以便爲鏈接器提供靜態庫的系統目錄的正確路徑?目前我使用:

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

但是這給了一堆警告,如果不存在這些迪爾斯,並可能仍然不是一般的工作。

回答

3

如果您確定,您的用戶使用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 

我知道沒有其他方式,懷疑是否存在。