在將ssh移植到龍芯1B核心板的過程中,當編譯openssh-8.0p1工具時,出現了。
configure:error:*** working libcrypto not found,check config.log
的報錯,根據提示,在openssh-8.0p1的文件夾根目錄下,找到config.log文件,查看分析後發現,報錯原因在於。
error adding symbols:Bad value
這一句錯誤反饋。
這是一個動態庫和靜態庫使用的相關問題。
生成靜態庫或者動態庫時,要添加 -fPIC ,這是創建庫文件時所需要的,保證庫文件編譯後,在內存中的位置不是絕對位置,而是一個相對位置。
不使用此命令,編譯出來的靜態庫,沒有重定位能力,往往無法使用。
而在openssl-1.0.2r下編譯出來的libcrypto.a是一個靜態庫,因此出現無法使用的情況。
-fPIC 全稱是Position Independent Code,用於生成位置無關代碼,代碼無絕對跳轉,都是相對跳轉。
因此,在編譯openssl的庫文件時,需要添加-fPIC,如下
#./Configure --prefix=/mnt/more/loongson/sshwork/openssl-1.0.2r
os/compiler:mipsel-linux-gcc -fPIC