最近有個項目用到openssl,於是去openssl的官方網站上下載了最新的版本,v1.1.1b版本。 解壓之後,發現配置編譯,可以使用./config或者./Configure來完成。 網上也查了一些交叉編譯的說明,經常在config之後,還要手動的修改makefile才行。這種就對我這種需要維護 ...
最近有個平臺軟體模塊需要依賴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也編譯通過了。
下一步需要測試運行看看,是否有問題了。