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

2023-10-14 08:10

本文主要是介绍【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. 如果没有条件编译库文件,请修改 指定库文件 为对应位数下的库文件。

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

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


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

这篇关于【c++】c++ 编译链接时提醒 搜索动态库 -lxxxx 时跳过不兼容的libxxx.so的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/209219

相关文章

C++中使用vector存储并遍历数据的基本步骤

《C++中使用vector存储并遍历数据的基本步骤》C++标准模板库(STL)提供了多种容器类型,包括顺序容器、关联容器、无序关联容器和容器适配器,每种容器都有其特定的用途和特性,:本文主要介绍C... 目录(1)容器及简要描述‌php顺序容器‌‌关联容器‌‌无序关联容器‌(基于哈希表):‌容器适配器‌:(

SpringBoot实现动态插拔的AOP的完整案例

《SpringBoot实现动态插拔的AOP的完整案例》在现代软件开发中,面向切面编程(AOP)是一种非常重要的技术,能够有效实现日志记录、安全控制、性能监控等横切关注点的分离,在传统的AOP实现中,切... 目录引言一、AOP 概述1.1 什么是 AOP1.2 AOP 的典型应用场景1.3 为什么需要动态插

C++中实现调试日志输出

《C++中实现调试日志输出》在C++编程中,调试日志对于定位问题和优化代码至关重要,本文将介绍几种常用的调试日志输出方法,并教你如何在日志中添加时间戳,希望对大家有所帮助... 目录1. 使用 #ifdef _DEBUG 宏2. 加入时间戳:精确到毫秒3.Windows 和 MFC 中的调试日志方法MFC

VUE动态绑定class类的三种常用方式及适用场景详解

《VUE动态绑定class类的三种常用方式及适用场景详解》文章介绍了在实际开发中动态绑定class的三种常见情况及其解决方案,包括根据不同的返回值渲染不同的class样式、给模块添加基础样式以及根据设... 目录前言1.动态选择class样式(对象添加:情景一)2.动态添加一个class样式(字符串添加:情

SpringCloud配置动态更新原理解析

《SpringCloud配置动态更新原理解析》在微服务架构的浩瀚星海中,服务配置的动态更新如同魔法一般,能够让应用在不重启的情况下,实时响应配置的变更,SpringCloud作为微服务架构中的佼佼者,... 目录一、SpringBoot、Cloud配置的读取二、SpringCloud配置动态刷新三、更新@R

深入理解C++ 空类大小

《深入理解C++空类大小》本文主要介绍了C++空类大小,规定空类大小为1字节,主要是为了保证对象的唯一性和可区分性,满足数组元素地址连续的要求,下面就来了解一下... 目录1. 保证对象的唯一性和可区分性2. 满足数组元素地址连续的要求3. 与C++的对象模型和内存管理机制相适配查看类对象内存在C++中,规

在 VSCode 中配置 C++ 开发环境的详细教程

《在VSCode中配置C++开发环境的详细教程》本文详细介绍了如何在VisualStudioCode(VSCode)中配置C++开发环境,包括安装必要的工具、配置编译器、设置调试环境等步骤,通... 目录如何在 VSCode 中配置 C++ 开发环境:详细教程1. 什么是 VSCode?2. 安装 VSCo

如何用Python绘制简易动态圣诞树

《如何用Python绘制简易动态圣诞树》这篇文章主要给大家介绍了关于如何用Python绘制简易动态圣诞树,文中讲解了如何通过编写代码来实现特定的效果,包括代码的编写技巧和效果的展示,需要的朋友可以参考... 目录代码:效果:总结 代码:import randomimport timefrom math

Java中JSON字符串反序列化(动态泛型)

《Java中JSON字符串反序列化(动态泛型)》文章讨论了在定时任务中使用反射调用目标对象时处理动态参数的问题,通过将方法参数存储为JSON字符串并进行反序列化,可以实现动态调用,然而,这种方式容易导... 需求:定时任务扫描,反射调用目标对象,但是,方法的传参不是固定的。方案一:将方法参数存成jsON字

C++11的函数包装器std::function使用示例

《C++11的函数包装器std::function使用示例》C++11引入的std::function是最常用的函数包装器,它可以存储任何可调用对象并提供统一的调用接口,以下是关于函数包装器的详细讲解... 目录一、std::function 的基本用法1. 基本语法二、如何使用 std::function