libssh2交叉编译

本文档详细记录了在Ubuntu 18.04 LTS上进行交叉编译OpenSSL 1.0.0s和LibSSH2的过程,以适应Arm架构。由于glibc版本不兼容,作者选择了较旧的OpenSSL版本1.0.0s进行编译。通过设置适当的配置选项和解决链接器错误,成功完成了编译和安装。此外,还展示了如何检查gcc的编译器包含路径。
摘要由CSDN通过智能技术生成


# 主机环境 ubuntu 18..04LTS

交叉编译openssl

https://www.openssl.org/source/old/
编译libssh2时依赖openssl, 我的库中没有这个,因此首先移植这个。
这里试着编译了两种版本,首先尝试的是1.1.1版本,不过这个版本依赖glibc版本为2.25或更高,而我的glibc版本为2.21,因此最终放弃了这个版本,最终使用的是旧版 1.0.0。

1. 编译 openssl-1.1.1e.tar.gz
tar xvf openssl-1.1.1e.tar.gz
cd openssl-1xx

./config CC=arm-linux-gnueabi-gcc no-asm --prefix=<INSTALL DIR>
vim Makefile 
	# 搜索 '-m64' 并删除
make clean
make
make install

因为glibc的移植太麻烦了。改为移植较旧的openssl.

2. 编译 openssl-1.0.0s.tar.gz

这个版本跟上面配置不一样,开始整了挺久,这玩意用的是./Configure配置

下面编译:

tar xvf openssl-1.0.0s.tar.gz 
cd openssl-1.0.0s/

./Configure --prefix=<INSTALL DIR> shared no-asm linux-armv4
make clean
make CC=arm-linux-gnueabi-gcc
make install

直接用./config CC=arm-linux-gnueabi-gcc no-asm --prefix=<INSTALL DIR> shared --host=arm-linux的话,报以下信息,但实际是没配置好的

Operating system: x86_64-whatever-linux2
Configuring for linux-x86_64
target already defined - linux-x86_64 (offending arg: CC=arm-linux-gnueabi-gcc)

交叉编译libssh2

tar xvf libssh2-1.9.0.tar.gz
cd libssh2-1.9.0/

./configure CC=arm-linux-gnueabi-gcc \
	--prefix=/home/socbis/Xilinx/lib_build/libssh2 \
	--host=arm-linux \
	--with-libssl-prefix=<INSTALL DIR> \
	LDFLAGS="-Wl,-rpath-link,/home/socbis/Xilinx/lib_build/openssl/lib"
make && make install
解决链接器ld错误

如:ld: warning: libssl.so.1.1, needed by ../src/.libs/libssh2.so, not found (try using -rpath or -rpath-link)

在原配置中添加LDFLAGS="-Wl,-rpath-link,/home/socbis/Xilinx/lib_build/openssl/lib"

./configure CC=arm-linux-gnueabi-gcc \
--prefix=/home/socbis/Xilinx/lib_build/libssh2 \
--host=arm-linux \
--with-libssl-prefix=/home/socbis/Xilinx/lib_build/openssl \
LDFLAGS="-Wl,-rpath-link,/home/socbis/Xilinx/lib_build/openssl/lib"

其它:

查看gcc编译器 include <> 搜索路径

$ gcc -E -v -

#省略...

#include "..." search starts here:
#include <...> search starts here:
 /usr/lib/gcc/x86_64-linux-gnu/7/include
 /usr/local/include
 /usr/lib/gcc/x86_64-linux-gnu/7/include-fixed
 /usr/include/x86_64-linux-gnu
 /usr/include
End of search list.
$ arm-linux-gnueabi-gcc -E -v -

#省略...

#include "..." 搜索从这里开始:
#include <...> 搜索从这里开始:
 /home/socbis/gcc/gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabi/bin/../lib/gcc/arm-linux-gnueabi/7.4.1/include
 /home/socbis/gcc/gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabi/bin/../lib/gcc/arm-linux-gnueabi/7.4.1/include-fixed
 /home/socbis/gcc/gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabi/bin/../lib/gcc/arm-linux-gnueabi/7.4.1/../../../../arm-linux-gnueabi/include
 /home/socbis/gcc/gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabi/bin/../arm-linux-gnueabi/libc/usr/include
搜索列表结束。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值