在做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就行了
相关文章
发表评论