在做rk3568开发,默认的文件系统中不带curl库,所以需要自己重新交叉编译curl

curl有依赖ssl,在交叉编译 curl 之前,先交叉编译 OpenSSL。

下载curl的源码,并解压

tar -xzvf curl-8.0.0.tar.gz

进入目录

./configure   --target=aarch64-linux-gnu --host=aarch64-linux-gnu CC=aarch64-linux-gnu-gcc --prefix=/home/ireal/third/curl-8.0.0/aarch64_install

安装路径要写绝对路径,否者报错

configure报错信息如下:

configure: error: select TLS backend(s) or disable TLS with --without-ssl.

Select from these:

  --with-amissl

  --with-bearssl

  --with-gnutls

  --with-mbedtls

  --with-nss

  --with-openssl (also works for BoringSSL and libressl)

  --with-rustls

  --with-schannel

  --with-secure-transport

  --with-wolfssl

改用如下配置参数

./configure   --target=aarch64-linux-gnu --host=aarch64-linux-gnu CC=aarch64-linux-gnu-gcc --prefix=/home/ireal/third/curl-8.0.0/aarch64_install --without-ssl --with-openssl

但任然报错

configure: error: --with-openssl was given but OpenSSL could not be detected

应该是openssl的头文件和库文件路径找不到,构建的文件系统中其实有openssl的头文件和库文件

可以直接使用

./configure   --target=aarch64-linux-gnu --host=aarch64-linux-gnu CC=aarch64-linux-gnu-gcc --prefix=/home/ireal/third/curl-8.0.0/aarch64_install --with-ssl=/home/topeet/Linux/rk356x_linux/buildroot/output/rockchip_rk3568/host

其中:--with-ssl 指定交叉编译库 OpenSSL 的头文件和库路径;

configure任然报错

configure: error: --with-openssl was given but OpenSSL could not be detected

用readelf指令查看ssl库文件的elf,发现该文件的系统架构为x86_64

所以自己编译openssl

下载并解压openssl源码包

tar -xzvf openssl-1.1.1m.tar.gz

配置

./config no-asm --prefix=/home/ireal/third/openssl-1.1.1m/aarch64_install --cross-compile-prefix=aarch64-linux-gnu-

no-asm: 在交叉编译过程中不使用汇编代码代码加速编译过程

--prefix: 指定生成的头文件及库的路径,不修改此项则默认为 /usr/local 目录

--cross-compile-prefix: 指定交叉编译工具链命令的前缀,例如 aarch64-linux-gnu- 将 GNU 编译器作为 aarch64-linux-gnu-gcc 调用。

生产Makefile后直接make会报错

修改 Makefile 文件,将 -m64 移除并保存

之后

make

make install

就会再aarch64_install下生成所需要的文件

ssl完成之后再重新configure curl

configure成功后,make,再make install就行了

相关文章

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: