curl 7.26.0移植问题

在官网http://curl.haxx.se/ 下载 7.26.0源码包后直接解压,由于目标运行平台为mips-linux遂修改源码配置为以下信息

./configure --prefix=/home/zhangfan/source_code/curl-7.26.0/build_lib/  --enable-shared --enable-static=no \
--build=i686-linux --host=mips-linux --target=mips-linux \
--with-zlib=/home/zhangfan/source_code/curl-7.26.0/build_lib/  --enable-nonblocking \
--disable-tftp --disable-telnet --disable-manual --enable-file \
--without-libssh2 --without-ssl --without-random --without-gnutls \
--without-nss --without-ca-bundle --without-libidn \
--disable-ipv6 --disable-largefile

重点在 --builde --host --target, 其他只是功能的选择

build:

执行代码编译的主机,正常的话就是你的主机系统。这个参数一般由config.guess来猜就可以。当然自己指定也可以。
host:

编译出来的二进制程序所执行的主机,因为绝大多数是如果本机编译,本机执行。所以这个值就等于build。只有交叉编译的时候(也就是本机编译,其他系统机器执行)才会build和host不同。用host指定运行主机。
target:

这个选项只有在建立交叉编译环境的时候用到,正常编译和交叉编译都不会用到。他用build主机上的编译器,编译一个新的编译器(binutils, gcc,gdb等),这个新的编译器将来编译出来的其他程序将运行在target指定的系统上

 

配置完成后执行make clean; make install,  默认会把编译好的库文件放到lib/.libs 目录下, 这里有加入

--prefix选项,所以编译好后也会在指定目录下生产lib文件夹并把库文件拷贝到这个文件夹中。

 

其他程序中需要用到curl时直接链接编译好的库文件即可。 就在编译其他程序时链接curl库出现如下错误

./lib/libcurl.so: could not read symbols: File in wrong format

库文件格式不对无法链接,经过查找发现(执行file ./lib/libcurl.so)

 file ./lib/libcurl.so
./lib/libcurl.so: ELF 32-bit MSB shared object, MIPS, MIPS32 version 1 (SYSV), dynamically linked

编译出来的libcurl.so 为 MSB 大端模式,而程序需要的是小端,导致格式不对。

 

解决该问题的方法是在配置curl源码时

--host=mips-linux --target=mips-linux 改为 --host=mipsel-linux --target=mipsel-linux

即可把编译好的库文件定为小端模式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值