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

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

问题描述:

这个问题的表现是——在通过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. 继续以上面的 spx 库举例, 他有提供对应的 x64 库文件,如下:

libspx.a
libspx_64.a


  1. 所以这里可以修改 链接指令 告诉 ld 链接对应版本 ,修改如下:
  2. 原始版本
  3. c0563b37cb20d84fc6f5e31f95d090a6_84d8ace7f5864f6aa71173e7f8132dea.png
  4. 修改后版本

0a14141e6ccffa28f9919cad2a371d4b_ca50878a9f8f46c082ed70993b283d12.png

  1. 服务器高级架构体系:https://xxetb.xet.tech/s/4DEnTI
目录
相关文章
|
2月前
|
自然语言处理 编译器 Linux
|
7月前
|
安全 编译器 C++
C++一分钟之-编译时计算:constexpr与模板元编程
【6月更文挑战第28天】在C++中,`constexpr`和模板元编程用于编译时计算,提升性能和类型安全。`constexpr`指示编译器在编译时计算函数或对象,而模板元编程通过模板生成类型依赖代码。常见问题包括误解constexpr函数限制和模板递归深度。解决策略包括理解规则、编写清晰代码、测试验证和适度使用。通过实战示例展示了如何使用`constexpr`计算阶乘和模板元编程计算平方。
104 13
|
6月前
|
消息中间件 Java C语言
消息队列 MQ使用问题之在使用C++客户端和GBase的ESQL进行编译时出现core dump,该怎么办
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
2月前
|
自然语言处理 编译器 Linux
告别头文件,编译效率提升 42%!C++ Modules 实战解析 | 干货推荐
本文中,阿里云智能集团开发工程师李泽政以 Alinux 为操作环境,讲解模块相比传统头文件有哪些优势,并通过若干个例子,学习如何组织一个 C++ 模块工程并使用模块封装第三方库或是改造现有的项目。
|
3月前
|
存储 程序员 编译器
简述 C、C++程序编译的内存分配情况
在C和C++程序编译过程中,内存被划分为几个区域进行分配:代码区存储常量和执行指令;全局/静态变量区存放全局变量及静态变量;栈区管理函数参数、局部变量等;堆区则用于动态分配内存,由程序员控制释放,共同支撑着程序运行时的数据存储与处理需求。
182 21
|
3月前
|
Linux 编译器 C语言
Linux c/c++之多文档编译
这篇文章介绍了在Linux操作系统下使用gcc编译器进行C/C++多文件编译的方法和步骤。
52 0
Linux c/c++之多文档编译
|
3月前
|
算法 编译器 C++
【C++篇】领略模板编程的进阶之美:参数巧思与编译的智慧
【C++篇】领略模板编程的进阶之美:参数巧思与编译的智慧
99 2
|
3月前
|
存储 算法 C++
【搜索算法】 跳马问题(C/C++)
【搜索算法】 跳马问题(C/C++)
|
3月前
|
人工智能 算法 Java
【搜索算法】数字游戏(C/C++)
【搜索算法】数字游戏(C/C++)
|
4月前
|
Linux API C++
超级好用的C++实用库之动态库加载器
超级好用的C++实用库之动态库加载器
38 0