• 【c++】c++ 编译链接时提醒 搜索动态库 -lxxxx 时跳过不兼容的libxxx.so


    问题描述:这个问题的表现是——在通过g++或者gcc编译链接可执行程序的时候因为代码使用需要,需要添加对应 的三方库,这个时候在编译指令中 需要添加 动态库添加指令 告诉 ld 链接 对应名称的动态库、或者静态库。

    而在 ld 去指定路径下寻找时,这个路径下存在对应的动态库、静态库但是 这个时候,显示连接失败,这里以 我所使用的剑桥库 libspx.a 为例 展示错误信息为:

    [root@localhost SPxBitmap]# make 
    gcc  -o spxbitmap spxbitmap.o		\
    	-L../..//Libs/linux -lspx 		\
    	-lc -lstdc++ -lrt -lz -lm -lpthread  -lirc
    /usr/bin/ld: 当搜索用于 ../..//Libs/linux/libspx.a 时跳过不兼容的 -lspx 
    /usr/bin/ld: 找不到 -lspx
    collect2: 错误:ld 返回 1
    make: *** [spxbitmap] 错误 1
    [root@localhost SPxBitmap]# 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    这里表示 的错误 核心信息是 不兼容

    直接说结论: 所谓 不兼容 说的是 库编译时的操作系统位数 和 链接库时 代码的编译环境下操作系统位数 ,两者不一致。

    解决方式

    1. 如果有源码,请重新在统一位数下编译链接。

    2. 如果没有条件编译库文件,请修改 指定库文件 为对应位数下的库文件。

      1. 继续以上面的 spx 库举例, 他有提供对应的 x64 库文件,如下: 请添加图片描述
      libspx.a
      libspx_64.a
      
      • 1
      • 2
      1. 所以这里可以修改 链接指令 告诉 ld 链接对应版本 ,修改如下:
        1. 原始版本 请添加图片描述

        2. 修改后版本 请添加图片描述


    服务器高级架构体系:https://ke.qq.com/course/417774?flowToken=1010783

  • 相关阅读:
    有限小数,进制转换,思维
    Git-04-远程库
    初识Sentinel
    Data security.隐私保护-多方安全计算技术基础
    10.正则表达式匹配
    VulnHub narak
    rk3588编译atlas200
    【深度学习】笔记3-神经网络的学习
    代码优化实例
    数据库的基本操作(4)
  • 原文地址:https://blog.csdn.net/qq_29111047/article/details/126665236