美文网首页
QT交叉编译外部库

QT交叉编译外部库

作者: Lazy_Caaat | 来源:发表于2018-10-16 20:13 被阅读0次

    问题:在X86环境下编译没问题的HTTP工程想要进行交叉编译,链接的时候出现搜索到的库.so文件格式不对。

    问题很明显,外部库没有进行交叉编译还是X86的格式,我们需要进行单独的编译并安装库,以openssl为例。
    利用arm-none-linux-gnueabi-gcc交叉编译openssl,生成静态库文件libcrypto.a ,libssl.a

     source /opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa9hf-neon-poky-linux-gnueabi
    
    • 解压openssl源码,进入目录,执行:
    ./config no-asm -shared --prefix=/usr/local/ssl-1.0.2/
    

    配置,--prefix为安装目录
    配置完成后:手动修改生成的Makefile,并且找到有-m64的地方,全删之(共2处)

    • 如有需要root权限安装则
      sudo -s进入root即可
      make & make install
      备注:这里遇到arm-poky-linux-gnueabi-arm-poky-linux-gnueabi-gcc找不到的问题,一开始以为环境变量没配置好,仔细一看这个名字有问题,前面和后面的arm-none-linux-重复了,能找到这个工具链才怪。这种问题直接看Makefile,vim打开,查看编译器的配置
    image.png
    • 红框中的原来是这样的CC= $(CROSS_COMPILE)arm-poky-linux-gnueabi-gcc
      而CROSS_COMPILE变量又是arm-poky-linux-gnueabi-,所以最后拼出来一个arm-poky-linux-gnueabi-arm-poky-linux-gnueabi-gcc奇怪的名字,删掉重复的部分就行了,问题产生原因还没找到。
    • 在qt-creater的pro文件中添加外部库的连接
    LIBS += -L/usr/local/ssl-1.0.2  -lcrypto
    

    这时就可以正常的交叉编译了

    相关文章

      网友评论

          本文标题:QT交叉编译外部库

          本文链接:https://www.haomeiwen.com/subject/jyfkzftx.html