最近在做远场语音项目,最终运行在 amlogic(aarch64)板子上,需要在我的 ubuntu 电脑上对代码交叉编译,对项目依赖库也要进行交叉编译。
下面记录 curl 交叉编译过程。
1, 安装交叉编译环境,我的 aarch64-linux-gnu,下载与你电脑对应的交叉编译器压缩包(http://releases.linaro.org/components/toolchain/binaries/6.3-2017.02/aarch64-linux-gnu/)
2, 解压后配置环境变量,打开终端
$ export PATH=/usr/local/gcc-linaro-6.3.1-2017.02-x86_64_aarch64-linux-gnu/bin:$PATH
注意替换你自己的安装目录,测试交叉编译环境是否安装成功,在终端输入:
$ aarch64-linux-gnu-gcc -v
最后一行输出
gcc version 6.3.1 20170109 (Linaro GCC 6.3-2017.02)
表示安装成功。
3,github 上下载 curl
$ git clone https://github.com/curl/curl
4, 交叉编译 curl
sudo ./configure
--target=aarch64-linux-gnu
--host=aarch64-linux-gnu
--prefix=/home/ksq/package/curl-arm
--disable-threaded-resolver
CC=/usr/local/gcc-linaro-6.3.1-2017.02-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc
sudo make
sudo make install
--target
表示你要交叉编译目标平台
--host
交叉编译后运行平台
--prefix
交叉编译后存放目录
--disable-threaded-resolver
应该和线程有关,安装时报了 Threaded resolver enabled butno thread library found
这个错,所以禁用了
CC
指定交叉编译器,替换默认的 gcc 编译器。
./configure
后输出:
curl version: 7.57.0
Host setup: aarch64-unknown-linux-gnu
Install prefix: /home/ksq/package/curl-arm
Compiler: /usr/local/gcc-linaro-6.3.1-2017.02-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc
SSL support: no (--with-{ssl,gnutls,nss,polarssl,mbedtls,cyassl,axtls,winssl,darwinssl} )
SSH support: no (--with-libssh2)
zlib support: no (--with-zlib)
brotli support: no (--with-brotli)
GSS-API support: no (--with-gssapi)
TLS-SRP support: no (--enable-tls-srp)
resolver: default (--enable-ares / --enable-threaded-resolver)
IPv6 support: enabled
Unix sockets support: enabled
IDN support: no (--with-{libidn2,winidn})
Build libcurl: Shared=yes, Static=yes
Built-in manual: enabled
--libcurl option: enabled (--disable-libcurl-option)
Verbose errors: enabled (--disable-verbose)
SSPI support: no (--enable-sspi)
ca cert bundle: no
ca cert path: no
ca fallback: no
LDAP support: no (--enable-ldap / --with-ldap-lib / --with-lber-lib)
LDAPS support: no (--enable-ldaps)
RTSP support: enabled
RTMP support: no (--with-librtmp)
metalink support: no (--with-libmetalink)
PSL support: no (libpsl not found)
HTTP2 support: disabled (--with-nghttp2)
Protocols: DICT FILE FTP GOPHER HTTP IMAP POP3 RTSP SMTP TELNET TFTP
最后在我的电脑/home/ksq/package/curl-arm 目录下生成编译后的静态库和动态库。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于