源码编译wget问题解决

来源:互联网 发布:厦门php培训哪家好 编辑:程序博客网 时间:2024/05/11 18:02

源码编译wget问题解决

  工作需要交叉编译高版本wget,以实现嵌入式设备的https下载,其中遇到一些编译问题,如openssl.c:(.text+0x6a1): undefined reference to 'SSLv2_client_method'遂记录一下。

编译openssl

  下载openssl源码,需要编译为共享库,默认编译为静态库,据说编译为静态库最后在编译wget时链接不了。

  1. 找一个支持SSL2的OpenSSL版本(比如OpenSSL 1.0.2),用下面的命令重新生成Makefile文件
    ./config shared
  2. 编译
    make
    make install

      但是make install之后我并没有在/lib或者/usr/lib下面找到这些库libssl.so libcrypto.so。那我就手动复制吧,复制过去还是一样的效果,编译wget时还是提示SSLv2_client_method未定义。表明最后链接的时候还是没有链接对。
      于是我locate libpthread.so找一下动态库都放哪个目录了。找到在目录/usr/lib/i386-linux-gnu/libpthread.so/lib/i386-linux-gnu/libpthread.so.0。于是我再把cp过去就发现可以编译过了。
    cp libcrypto.so* /lib/i386-linux-gnu/
    cp libssl.so* /lib/i386-linux-gnu/

编译wget

  执行./configure && make就行了


交叉编译openssl

  1. 配置编译为共享库
    ./config no-asm shared –prefix=`pwd`/llm/

  2. 修改Makefile
    PLATFORM=linux-elf-arm
    CC=/projects/hnd/tools/linux/hndtools-arm-linux-2.6.36-uclibc-4.5.3/bin/arm-brcm-linux-uclibcgnueabi-gcc
    去掉CFLAG里面的-march=pentium

  3. 编译
    make && make install

编译后的库文件在当前目录的./llm/lib/里面。

交叉编译wget

  1. 配置,主要传入host,CC,prefix参数
    ./configure –host=arm-brcm-linux-uclibcgnueabi –disable-debug CC=/projects/hnd/tools/linux/hndtools-arm-linux-2.6.36-uclibc-4.5.3/bin/arm-brcm-linux-uclibcgnueabi-gcc –prefix=`pwd`/llm/
  2. 编译
    make

      因为这交叉编译工具链集成了openssl库,所以可以编过,如果链接时不过,那么就需要手动指定链接上面我们交叉编译过的openssl库。

然后把src目录下的wget和交叉编译生成的opssl库编译进目标板里面就可以使用wget进行https下载了。

0 0
原创粉丝点击