Linux下libcurl的编译和交叉编译
一、下载curl源码
下载地址:https://curl.haxx.se/download/
二、创建目标输出目录
我创建了两个,一个放linux版本、一个放arm版本。
# mkdir build_linux build_arm
三. 解压文件
# tar -xvf curl-7.63.0.tar.xz
四. 配置并编译
Linux版本: (--prefix指定编译输出安装路径 --enable-static 指定编译静态库)
# ./configure --prefix=/home/gec/csdn/curl/build_linux --enable-static
# make
# make install
ARM版本:(--prefix指定编译输出安装路径 --enable-static 指定编译静态库 CC指定交叉编译工具链)
# ./configure --host=arm-linux CC=arm-linux-gcc --prefix=/home/gec/csdn/curl/build_arm --enable-static
# make
# make install
1.此处的 --enable-static 加上没效果,最后还是动态链接。至少这个版本是这样的
2.--prefix后面一定要是绝对路径,不能是相对路径
五.移植到arm平台上,因为上面的 --enable-static 选项没起作用,需要将用到的库复制到对应路径,这里变态的不是从默认的/lib目录下读取库文件
1.先到libcurl/bin下 readelf -d curl 查看curl的所需的库文件及库目录
我这里显示库的路径是:“Library rpath: [/home/arm/share/4.开源库/curl-7.63.0/xxx/lib]”
2. 在开发板上要创建同样的路径名字,并将库文件全部复制
mkdir /home/arm/share/4.开源库/curl-7.63.0/xxx/lib -p
cp /nfs/4.开源库/curl-7.63.0/xxx/lib/ /home/arm/share/4.开源库/curl-7.63.0/xxx/lib/
如果不做上述操作,执行curl命令时,不管后面是什么,一律返回:curl: (48) Error,也不提示是不是缺少库所造成的!
六. 复制bin下面的curl到开发板上,路径随意
参考
不需要openssl
https://blog.csdn.net/fangye945a/article/details/86500817
https://www.jianshu.com/p/4688db3e2fdc
需要openssl
https://www.cnblogs.com/hesetone/p/13724866.html
https://blog.csdn.net/yao00037/article/details/118001062