Undefined reference错误处理及Linux设置动态链接库so的默认搜索路径

news2025/1/15 22:44:56

文章目录

  • 1 问题的提出
  • 2 问题的分析
  • 3 问题的解决
    • 3.1 Windows的VS修改配置属性
    • 3.2 Linux系统里添加搜索路径
      • json在`/usr/llib`目录中
      • libcryto.so在`/usr/lib64`文件夹中
  • Linux设置动态链接库so的默认搜索路径
    • 方法一:修改 ld.so.conf 文件
    • 方法二:修改环境变量
    • 方法三:在编译目标代码时指定该程序的动态库搜索路径

1 问题的提出

当我们在程序中引用对象名称(类、函数、变量等)并且链接器在尝试在所有链接的目标文件中搜索它时找不到它的定义时,就会发生“Undefined reference" 未定义的引用”错误.

因此,当链接器找不到链接对象的定义时,它会发出Undefined reference错误。从定义中可以清楚地看出,此错误发生在链接过程的后期阶段。导致Undefined reference错误的原因有多种。可以参考如下链接:

原文链接:https://blog.csdn.net/ouyang_peng/article/details/128255801

2 问题的分析

没有库,就添加库就可以了。

3 问题的解决

3.1 Windows的VS修改配置属性

在数据安全传输平台工程的属性中,选择

配置属性>>链接器>>库依赖项

在库依赖项中添加"掐头去尾的”动态库名字:json; crypto; protobuf
在这里插入图片描述

3.2 Linux系统里添加搜索路径

json在/usr/llib目录中

在这里插入图片描述

libcryto.so在/usr/lib64文件夹中

在这里插入图片描述

Linux设置动态链接库so的默认搜索路径

Linux动态库的默认搜索路径是/lib/usr/lib,64位系统是/lib64/usr/lib64

动态库被创建后,一般都复制到这两个目录中。

当程序执行时需要某动态库,并且该动态库还未加载到内存中,则系统会自动到这两个默认搜索路径中去查找相应的动态库文件,然后加载该文件到内存中,这样程序就可以使用该动态库中的函数,以及该动态库的其它资源了。

在Linux 中,动态库的搜索路径除了默认的搜索路径外,还可以通过以下三种方法来指定。

方法一:修改 ld.so.conf 文件

vi /etc/ld.so.conf

在文件末尾添加 lib目录,然后重新加载:

ldconfig

方法二:修改环境变量

通过环境变量LD_LIBRARY_PATH指定动态库搜索路径:

export LD_LIBRARY_PATH="LD_LIBRARY_PATH:/mylibpath/"

方法三:在编译目标代码时指定该程序的动态库搜索路径

还可以在编译目标代码时指定程序的动态库搜索路径。
通过gcc 的参数”-Wl, -rpath,”指定.

如:

g++ main.cpp -L./ -lprintf -Wl,-rpath=./

表示在当前路径中找动态库。
这个方法可以避免安装部署的麻烦。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1149240.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

3分钟搞定腾讯云轻量应用服务器和云服务器的区别

腾讯云轻量服务器和云服务器有什么区别?为什么轻量应用服务器价格便宜?是因为轻量服务器CPU内存性能比云服务器CVM性能差吗?轻量应用服务器适合中小企业或个人开发者搭建企业官网、博客论坛、微信小程序或开发测试环境,云服务器CV…

CentOS停更沉寂,RHEL巨变限制源代:Docker容器化技术的兴起助力操作系统新格局

一、概述 操作系统是计算机系统的核心软件,它管理和控制着计算机的硬件和软件资源,为用户和应用程序提供了一个统一、高效、安全的运行环境。操作系统的发展历史也是计算机技术的发展历史的重要组成部分,它见证了计算机从单机到网络&#xf…

GaussDB SQL基础语法示例-常见的条件表达式

目录 一、前言 二、条件表达式的概念及GaussDB中的常见条件表达式 三、GaussDB中常用的条件表达式(语法 示例) 1、CASE表达式 2、DECODE表达式 3、COALESCE表达式 4、NULLIF表达式 5、GREATEST/ LEAST表达式 6、NVL表达式 四、小结 一、前言 …

聚观早报 |蔚来推出婚车服务;长城汽车第三季度财报

【聚观365】10月30日消息 蔚来推出婚车服务 长城汽车第三季度财报 AI汽车机器人极越01上市 谷歌投资初创公司Anthropic 东方财富第三季度营收 蔚来推出婚车服务 据蔚来汽车官方消息,蔚来宣布推出“蔚来用户专享”的婚庆用车定制服务。 据悉,该服务…

Web3风险不可回避,欧科云链携手FT中文、港大重塑行业信心

在香港Web3.0行业,技术推动了虚拟资产投资市场的快速增长,但另一方面,JPEX诈骗案等行业风险事件也接连发生,为Web3行业发展提供了重要警示。在刚刚结束的香港立法会施政报告答问会上,行政长官李家超表示,与…

三相电机输入线电流与输出功率之间的理论曲线

1.首先取一组电机参数: 定子电阻:11.421欧转子电阻:7.553欧漏感抗:42.90 毫亨互感抗:553.9毫亨空载电流:1.17安。 2. 利用T型等效电路公式绘图: import numpy as np import matplotlib.pyplot …

c语言数据类型的定义

c语言数据类型的定义 c语言数据类型的定义 c语言数据类型的定义一、数据类型的定义二、变量三、常量 一、数据类型的定义 数据类型的定义 在计算机中,不同的数据所需占用的存储空间是不同的,为了便于把数据分成所需内存大小不同的数据,充分利…

OceanBase安装部署

OceanBase自动化安装部署OBD 前提条件一、 OceanBase 集群部署规划1、创建用户2、规划目录 二、安装OceanBase环境1、 方案一:若机器能联网执行如下命令在线下载并安装 all-in-one 安装包2、 方案二:若机器不能联网需要在官网下载 all-in-one安装包&…

8+双疾病+WGCNA+多机器学习筛选疾病的共同靶点并验证表达

今天给同学们分享一篇双疾病WGCNA多机器学习的生信文章“Shared diagnostic genes and potential mechanism between PCOS and recurrent implantation failure revealed by integrated transcriptomic analysis and machine learning”,这篇文章于2023年5月16日发表…

雅思小作文笔记

mostly from Simon’s methods and techniques remember the task is describe what you see, not give an opinion. Just write a report.no conclusion, just a summary(the overview) Question type 小作文的题目类型大致如上 Simon所述,在描述数字的时候&…

云服务器 centos 部署 code-server 并配置 c/c++ 环境

将你的云服务器改为 centos 8 为什么要将云服务器的操作系统改成 centos 8 呢?原因就是 centos 7 里面的配置满足不了 code-server 的需求。如果你使用的是 centos 7 那么就需要你升级一些东西,这个过程比较麻烦。我在 centos 7 上面运行 code-server 的…

内含800个程序案例,最强Python学习资料来了,清华北大都在用!

IEEE Spectrum 重磅发布了 2023 年度编程语言榜单,Python 不仅在“Spectrum”综合排名中保持第一的位置,而且远超第二名 Java。Python以其简洁明了的语法、丰富的库支持和强大的社区生态,赢得了全球开发者的青睐。同时,Python的跨…

拥抱健康生活:TikTok引领健康与生活方式趋势

在当今数字化时代,社交媒体平台的崛起已经改变了我们获取信息、分享经验和塑造生活方式的方式。其中,TikTok已经成为引领健康和生活方式趋势的先锋,为数百万用户提供了丰富多彩的健康相关内容。这篇文章将探讨TikTok如何影响了我们的健康观念…

免费录屏软件哪个好?帮你轻松找到最佳选择

在当今社会,录制屏幕已经成为了生活和工作中不可或缺的一部分。无论您是教育工作者、演示者还是视频创作者,掌握一款优秀的免费录屏软件都能够帮助您更好地传达您的信息。可是免费录屏软件哪个好呢?本文将深入探讨三款常用的免费录屏软件&…

CSDN热榜分析4:生成词云图

文章目录 函数封装UI设计输出词云 热榜分析系列: CSDN热榜分析🔥 UI界面🔥 领域热榜 函数封装 词云图的绘制功能早在最开始做热榜分析的时候就已经实现了,但需要依赖matplotlib来画图,而并没有直接导出功能&#x…

[Unity][VR]透视开发系列3-Passthrough应用的真机测试方法

【视频讲解】 视频讲解地址请关注我的B站。 专栏后期会有一些不公开的高阶实战内容或是更细节的指导内容。 B站地址: https://www.bilibili.com/video/BV1Zg4y1w7fZ/ 我还有一些免费和收费课程在网易云课堂(大徐VR课堂): https://study.163.com/provider/480000002282025/…

Apollo上机实践:一次对自动驾驶技术的亲身体验

上机实践 概述自动驾驶通信分布式系统开发模式开发工具 自动驾驶感知传感器特性感知流程及算法部署感知模型 自动驾驶决策规划决策规划流程和算法使用 Dreamview 进行控制在环的规划调试开发规划场景和算法 福利活动 主页传送门:📀 传送 概述 Apollo 是…

【3妹教我学历史-秦朝史】1 秦朝初期

插: 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 坚持不懈,越努力越幸运,大家一起学习鸭~~~ 2哥 :3妹,在干嘛呢 3妹:读书呢…

不定长顺序表3

六.判空函数 刚刚忘记参数判断了 七.查找函数——在顺序表PS中 查找第一个key值,找到返回key值的下标,没有找到返回-1 不管能否扩容,查找都是在有效数据内部查找,所以可以把定长顺序表的查找Search函数搬过来 测试也跟定长的一样…

PCA9865 模块使用

本来是用来控制灯的,若用来控制舵机等,需外接电源 arduino arduino stm32 引脚A4为SDA,引脚A5为SCL asrpro 使用softiic库,使用arduino的 Adafruit_PWMServoDriver驱动库 进行修改 若要封装,需将Adafruit_PWMServoD…