關於openssl的交叉編譯


最近有個平台軟件模塊需要依賴openssl,於是去openssl的官方網站上下載了最新的版本,v1.1.1b版本。

解壓之后,發現配置編譯,可以使用./config或者./Configure來完成。

網上也查了一些交叉編譯的說明,經常在config之后,但是大都還要手動的修改makefile才行。

這就讓我這種需要為N個交叉編譯環境提供平台庫文件的人頭疼了。

但是仔細一想,openssl這種用途如此廣的開源庫,在交叉編譯應該做得很好才對啊!

於是打開config腳本,稍微研究了一下,其實交叉編譯也是可以配置的,並不需要config之后,再手動改makefile。

./config no-asm shared --prefix=/home/xxx/git_base/openssl/release/himix100 CROSS_COMPILE=/opt/xxx/aarch64-himix100-linux/bin/aarch64-himix100-linux- CC=gcc

只要修改環境變量CROSS_COMPILE和CC,即可完成編譯的配置,這樣我成功為Hi3559A編譯了openssl庫。

但是接下來,進行hisiv500編譯器的配置時,又遇到問題了。

其一是,編譯時,有很多告警,一看就是由於32位編譯器與64位源碼之間的不兼容告警。

其二是,hisiv500編譯器是不提供GNU C的ucontext庫的,所以最后一些tools的鏈接會有些函數找不到。

繼續查看config文件,沒有找到如何配置系統的位寬。

這時,嘗試常規的Configure --help,原來Configure里面是可以配置的。

./Configure linux-generic32 no-asm shared no-async --prefix=/home/xxx/git_base/openssl/release/hisiv500/ CROSS_COMPILE=/opt/xxx/arm-hisiv500-linux/bin/arm-hisiv500-linux-uclibcgnueabi- CC=gcc

no-async的作用是不使用GNU的ucontext庫

linux-generic32表示是32位操作系統

--prefix表示istall時的文件輸出目錄

如此一來,hisiv500也編譯通過了。

下一步需要測試運行看看,是否有問題了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM