源码编译wget问题解决

    xiaoxiao2021-03-25  147

    源码编译wget问题解决

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

    编译openssl

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

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

    编译 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

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

    修改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

    编译 make && make install

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

    交叉编译wget

    配置,主要传入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/

    编译 make

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

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

    转载请注明原文地址: https://ju.6miu.com/read-3632.html

    最新回复(0)