openssl移植及錯誤解決

https://www.openssl.org/source/下載openssl-1.1.1源代碼

# tar zxvf openssl-1.1.1.tar.gz  
# cd openssl-1.1.1
# mkdir build_arm
# ./config no-asm shared no-async --prefix=/home/wenyi/development/soft_arm/openssl-1.1.1/build_arm --cross-compile-prefix=arm-hisiv500-linux-   生成makefile文件
修改makefile,去除掉 -m64和-m32選項
# make && make install

【錯誤描述】:

./libcrypto.so: warning: gethostbyname is obsolescent, use getnameinfo() instead.
./libcrypto.so: undefined reference to `getcontext'
./libcrypto.so: undefined reference to `setcontext'
./libcrypto.so: undefined reference to `makecontext'

【錯誤原因】:
之前config使用:
./config no-asm shared --prefix=/home/wenyi/development/soft_arm/openssl-1.1.1/build_arm --cross-compile-prefix=arm-hisiv500-linux-
沒有使用 no-async 參數,加上之後就可以了。
【參數說明】

  1. no-asm: 在交叉編譯過程中不使用匯編代碼代碼加速編譯過程.原因是它的彙編代碼是對arm格式不支持的。
  2. shared: 生成動態連接庫。
  3. no-async: 交叉編譯工具鏈沒有提供GNU C的ucontext庫
  4. –prefix=: 安裝路徑,編譯完成install後將有bin,lib,include等文件夾
  5. –cross-compile-prefix=: 交叉編譯工具

【其他版本】

openssl-0.9.8編譯

# ./config no-asm shared no-async --prefix=/home/wenyi/development/soft_arm/openssl-0.9.8zh/build_arm 

將Makefile中編譯工具加上交叉編譯工具前綴
修改Makefile中的-m64

# make && make install

使用openssl-1.0.0移植到hisi的問題解決

【錯誤描述】:

運行時報其他版本也報類似錯誤
3069428896:error:0306E06C:bignum routines:BN_mod_inverse:no inverse:bn_gcd.c:491:
3069428896:error:14098077:SSL routines:SSL3_SEND_CLIENT_KEY_EXCHANGE:bad rsa encrypt:s3_clnt.c:2059:

【錯誤原因】:
編譯選項中沒有指定芯片架構,配置腳本在猜測時將芯片架構猜測爲linux-x86_64,解決辦法爲在config文件中修改

部分規則
626     OUT="linux-generic32" ;;
627   armv[1-3]*-*-linux2) OUT="linux-generic32" ;;
628   arm*-*-linux2) OUT="linux-armv4" ;;
629   sh*b-*-linux2) OUT="linux-generic32"; options="$options -DB_ENDIAN" ;;
630   sh*-*-linux2)  OUT="linux-generic32"; options="$options -DL_ENDIAN" ;;
631   m68k*-*-linux2) OUT="linux-generic32"; options="$options -DB_ENDIAN" ;;
632   s390-*-linux2) OUT="linux-generic32"; options="$options -DB_ENDIAN" ;;
633   s390x-*-linux2) OUT="linux-s390x" ;;
634   x86_64-*-linux?) OUT="linux-x86_64" ;;
635   *86-*-linux2) OUT="linux-elf"

我修改的地方
# read the output of the embedded GuessOS 
read GUESSOS
GUESSOS="armv7-hisi-linux2"     //查看config中對GUESSOS解析規則,根據自己芯片架構修改
echo Operating system: $GUESSOS

參考博客

1- 移植openssh-7.5p1(包括openssl-1.0.2l、zlib-1.2.11)到HISI3520d編譯篇

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章