Linux学习之i-mx287学习:curl在linux下交叉编译动态库遇到的问题及解决方案

最近在尝试编译curl库,安装了其所需的openssl库,在交叉编译curl库的时候,按照网上给的配置教程,一步步来,最后出了问题,所以在这里记录一下自己的配置方法和问题解决方案:

参考:https://blog.csdn.net/andylauren/article/details/78821916

这篇博文配置安装openssl都没有问题,但是在交叉编译curl库的时候,博文的配置指令是:

CPPFLAGS="-I/home/linux/arm/openssl/ -I/home/linux/arm/openssl/include" LDFLAGS="-L/home/linux/arm/openssl/lib" LIBS="-ldl" ./configure --host=arm-linux CC=arm-linux-gcc CXX=arm-linux-g++ --with-ssl --enable-shared --enable-static --disable-dict --disable-ftp --disable-imap --disable-ldap --disable-ldaps --disable-pop3 --disable-proxy --disable-rtsp --disable-smtp --disable-telnet --disable-tftp --disable-zlib --without-ca-bundle --without-gnutls --without-libidn --without-librtmp --without-libssh2 --without-nss --without-zlib --prefix=/home/linux/arm/curl
其中 --host=arm-linux CC=arm-linux-gcc CXX=arm-linux-g++配置交叉编译器

我也是这么配的,openssl安装的库路径也和博文上设置的一样,出现了如下图的错误:

好不容易上面那个问题找到解决方案了,原来是在配置ssl时没指定ssl的路径,所以改后的配置指令如下:

CPPFLAGS="-I/home/linux/arm/openssl/ -I/home/linux/arm/openssl/include" LDFLAGS="-L/home/linux/arm/openssl/lib" LIBS="-ldl" ./configure --host=arm-linux CC=arm-linux-gcc CXX=arm-linux-g++ --with-ssl=/home/linux/arm/openssl/ --enable-shared --enable-static --disable-dict --disable-ftp --disable-imap --disable-ldap --disable-ldaps --disable-pop3 --disable-proxy --disable-rtsp --disable-smtp --disable-telnet --disable-tftp --disable-zlib --without-ca-bundle --without-gnutls --without-libidn --without-librtmp --without-libssh2 --without-nss --without-zlib --prefix=/home/linux/arm/curl

再重新来编译一遍(记得make之前先make clean一下),编译通过了:

编译过后,执行sudo make install,心情很激动,以为不会有问题了吧,然鹅:

好吧,出现了../libtool: line 1722: arm-linux-ranlib: command not found这个问题。

以上问题解决了,make install前需要进到/home/gec/soft/curl-7.57.0/src目录下再执行行sudo make install

 

在搜索问题解决方法时,了解了一下arm-linux编译链各工具的功能含义,arm-linux工具的功能如下:

arm-linux-addr2line 把程序地址转换为文件名和行号。在命令行中给它一个地址和一个可执行文件名,它就会使用这个可执行文件的调试信息指出在给出的地址上是哪个文件以及行号。
arm-linux-ar 建立、修改、提取归档文件。归档文件是包含多个文件内容的一个大文件,其结构保证了可以恢复原始文件内容。
arm-linux-c++flit 连接器使用它来过滤 C++ 和 Java 符号,防止重载函数冲突。
arm-linux-gprof 显示程序调用段的各种数据。
arm-linux-ld 是连接器,它把一些目标和归档文件结合在一起,重定位数据,并连接符号引用。通常,建立一个新编译程序的最后一步就是调用ld。
arm-linux-nm 列出目标文件中的符号。
arm-linux-objcopy 把一种目标文件中的内容复制到另一种类型的目标文件中。
arm-linux-objdump 显示一个或者更多目标文件的信息。使用选项来控制其显示的信息,它所显示的信息通常只有编写编译工具的人才感兴趣。
arm-linux-ranlib 产生归档文件索引,并将其保存到这个归档文件中。在索引中列出了归档文件各成员所定义的可重分配目标文件。
arm-linux-readelf 显示elf格式可执行文件的信息。
arm-linux-size 列出目标文件每一段的大小以及总体的大小。默认情况下,对于每个目标文件或者一个归档文件中的每个模块只产生一行输出。
arm-linux-string 打印某个文件的可打印字符串,这些字符串最少4个字符长,也可以使用选项-n设置字符串的最小长度。默认情况下,它只打印目标文件初始化和可加载段中的可打印字符;对于其他类型的文件它打印整个文件的可打印字符。这个程序对于了解非文本文件的内容很有帮助。
arm-linux-strip 丢弃目标文件中的全部或者特定符号。

如果想更快捷的编译curl库,可以参考:https://blog.csdn.net/fangye945a/article/details/86500817

 

下面给出测试安装好的curl环境的方法:

HTTP Post请求天气信息(基于curl库 ):https://blog.csdn.net/fangye945a/article/details/86530858

天气服务器备忘:https://blog.csdn.net/fangye945a/article/details/86530182

我的测试结果:
指令:gec@ubuntu:/home/linux/opt/curl/bin$ ./curl -d "city=changsha&appkey=8010132dcf54491a4eaa387f4db61774" "https://way.jd.com/he/freeweather"

 

 

 


 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yzxjd1314

多谢鼓励,探索前行

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值