简要:最近需要在arm平台上使用curl来解析网页的api
一,下载curl源码
地址:https://curl.haxx.se/download.html
解压:tar -xvf curl-7.57.0.tar.gz
二,配置curl
./configure --prefix=/home/test/libcurl --host=arm-cortex_a9-linux CC=arm-cortex_a9-linux-gnueabi-gcc CXX=arm-cortex_a9-linux-gnueabi-g++
--prefix=/home/test/libcurl 是curl的安装路径
CC=arm-cortex_a9-linux-gnueabi-gcc
CXX=arm-cortex_a9-linux-gnueabi-g++
CC和CXX是对应使用的交叉编译器
然后执行
make
make install
生成成功后在libcurl目录下有四个文件夹
bin include lib share
三,移植到arm平台上
1,先到libcurl/bin下 readelf -d curl 查看curl的所需的库文件及库目录
## 或者使用ldd curl 查看所需要的库及库的路径 (2018-1-8更新)
readelf -d curl
Dynamic section at offset 0x28420 contains 29 entries:
Tag Type Name/Value
0x00000001 (NEEDED) Shared library: [libcurl.so.4]
0x00000001 (NEEDED) Shared library: [libz.so.1]
0x00000001 (NEEDED) Shared library: [libgcc_s.so.1]
0x00000001 (NEEDED) Shared library: [libpthread.so.0]
0x00000001 (NEEDED) Shared library: [libc.so.6]
0x0000000f (RPATH) Library rpath: [/home/test/libcurl/lib]
我这里显示库的路径是:/home/test/libcurl/lib
所以在开发板上要创建同样的路径名字,并将库文件全部复制
cp /home/test/libcurl/lib/* /home/project/rootfs/home/test/libcurl/lib(这个是我的开发板的路径)
2,复制bin下面的curl到开发板上
cp /home/test/libcurl/bin/curl /home/project/rootfs/home
3,执行./curl
~ # ./curl
./curl: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory
提示没有libz.so.1的库文件(后面还有很多这样的提示)
解决:开发板上已经有相应的库文件了,只是curl找不到
cp /lib/libz.so.1 /home/test/libcurl/lib 这是在开发板上执行的
然后继续执行./curl看还缺少什么库,继续使用上面的操作将库补全。
四,将curl放入开发板的bash目录
我的开发板bash目录是/bin
cp curl /bin 在开发板上执行