当前位置: 首页 > 工具软件 > libssh2.nim > 使用案例 >

libssh2交叉编译

毋修为
2023-12-01


# 主机环境 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
搜索列表结束。
 类似资料: