首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

/usr/bin/ld: /tmp/cc9zxSDP.o:对符号的引用未定义

这个问答内容涉及到编译器和链接器的错误信息。具体来说,"/usr/bin/ld: /tmp/cc9zxSDP.o:对符号的引用未定义"是指链接器(ld)在链接过程中发现/tmp/cc9zxSDP.o目标文件中引用的符号未定义。

这个错误通常发生在编译多个源文件时,其中一个源文件引用了另一个源文件中定义的函数或变量,但是链接器无法找到该函数或变量的定义。

要解决这个问题,可以采取以下步骤:

  1. 确保所有的源文件都被正确编译,并且生成了对应的目标文件。检查/tmp/cc9zxSDP.o文件是否存在,如果不存在,则可能是编译过程中出现了错误。
  2. 检查引用的符号是否在其他源文件中定义。如果是,确保这些源文件也被正确编译,并且生成了对应的目标文件。
  3. 如果引用的符号是在外部库中定义的,确保链接器能够找到该库。可以通过在链接命令中添加库文件路径或者使用-l选项指定库名来解决。
  4. 如果引用的符号是在当前源文件中定义的,检查是否存在拼写错误或者命名空间问题。确保函数或变量的名称和声明一致。

总结一下,这个错误提示表明在链接过程中发现了未定义的符号引用。解决方法包括确保所有源文件正确编译、检查符号是否在其他源文件或外部库中定义、检查命名是否正确。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Linux命令(65)——ld命令

-b :指定目标代码输入文件格式 -Bstatic:只使用静态库 -Bdynamic:只使用动态库 -Bsymbolic:把引用捆绑到共享库中全局符号 -c ,--mri-script=:为与MRI链接器兼容,ld接受由MRI命令语言编写脚本文件 --cref:创建跨引用表 -d,-dc,-dp:即使指定了可重定位输出文件.../写入文本和数据段 -n,--nmagic: 关闭节页面对齐,并禁用共享库链接。...org>:使用指定地址作为bss段起始点 -t,--trace:在处理输入文件时显示它们名称 -u ,--undefined=:强制指定符号在输出文件中作为未定义符号...warn-once:对于每个未定义符号只发出一次警告 -warn-section-align:如果为了对齐而改动了输出段地址,则发出警告 --whole-archive:对于指定存档文件,在存档中包含所有文件

17.1K01

程序一定要从main函数开始运行吗?

A: 这里涉及到程序链接两个步骤: 空间与地址分配:扫描所有的输入目标文件,获得它们每个段长度属性和位置,收集输入目标文件中符号表中所有符号定义和符号引用,统一放到一个全局符号表中,合并所有的段...Tips: 外部符号指的是目标文件需要引用符号,但是定义在其它目标文件中,链接前外部符号地址都是000000之类,链接后可执行文件就可以看见这些外部符号都是有地址。...,在链接器扫描完所有的输入目标文件后,所有这种未定义符号都应该能在全局符号表中找到,否则报符号未定义错误。...注意:我们代码里明明用是printf,为什么它却引用了puts符号呢,因为编译器默认情况下会把只用一个字符串参数printf替换成puts, 可以节省格式解析时间,使用-fno-builtin会关闭这个内置函数优化选项...I:该符号另一个符号间接引用 N:debug符号 R:该符号位于只读数据区 T:该符号位于代码段 U:该符号在当前文件未定义,定义在别的文件中 ?

1.2K30

一个奇怪链接问题

/ccx5lXbS.o:在函数‘main’中: expTest.c:(.text+0x20):‘exp’未定义引用 collect2: error: ld returned 1 exit status...我们发现,同样编译方法编译不过了,提示‘exp’未定义引用,并且抛出链接出错。...再次编译运行: gcc -lm -o expTest expTest.c /tmp/ccYT3E65.o:在函数‘main’中: expTest.c:(.text+0x20):‘exp’未定义引用...collect2: error: ld returned 1 exit status 为什么还是不行呢?...这个就涉及到链接器工作原理了,在此只简单说明一下:链接过程中,需要进行符号解析,并且是按照顺序解析;如果库链接在前,就可能出现库中符号不会被需要,链接器不会把它加到未解析符号集合中,那么后面引用这个符号目标文件就不能解析该引用

1.6K20

Linux From Scratch(LFS11.0)构建 LFS 系统 - 移除调试符号

大多数使用以下命令用户不会遇到什么困难。但是,如果打错了命令,很容易导致新系统无法使用,因此在运行 strip 命令前,最好备份 LFS 系统的当前状态。 一些库调试符号需要保存在单独文件中。...为了避免这种情况,将一些库和程序复制到 /tmp 中,在那里移除调试符号,再使用 install 命令将它们安装回原位置。.../lib; find libnss*.so* -type f)" for BIN in $online_usrbin; do cp /usr/bin/$BIN /tmp/$BIN strip...--strip-unneeded /tmp/$BIN install -vm755 /tmp/$BIN /usr/bin rm /tmp/$BIN done for LIB in $...---- 本次分享到此结束啦~ 如果觉得文章你有帮助,点赞、收藏、关注、评论,一键四连支持,你支持就是我创作最大动力。 ❤️ 技术交流可以 关注公众号:Lucifer三思而后行 ❤️

79440

linux动态库和静态库

一、静态库解析符号引用: 链接器ld是如何使用静态库来解析引用。在符号解析阶段,链接器从左至右,依次扫描可重定位目标文件(*.o)和静态库(*.a)。...在这个过程中,链接器将维持三个集合: 集合E:可重定位目标文件(*.o文件)集合。 集合U:未解析(未定义)符号集,即符号表中UNDEF符号。...1、对于每个输入文件f,如果是目标文件(.o),则将f加入E,并用f中符号表修改U、D(在文件f中定义实现符号是D,在f中引用符号是U),然后继续下个文件。...如果静态库中某个成员m(某个.o文件)定义了一个符号来解析U中引用,那么将m加入E中,    同时使用m符号表,来更新U、D。静态库中所有成员目标文件反复进行该过程,直至U和D不再发生变化。...(即: rm libold.so,此时,如果ld.so正在加在libold.so,内核就在引用libold.soinode节点,rm libold.soinode并没有被真正删除,当ld.solibold.so

12.3K20

C++ 链接库顺序导致符号未定义问题

符号未定义是链接过程中常见问题,有时候很明显,有时候却很隐晦,比如链接库顺序导致符号未定义问题。...问题描述使用 gcc/g++ 编译一个项目的时候,出现了未定义符号符号来源于一个开源库,确认了库位置,库中符号正常定义,库及其路径都被正确引用了。...这是一个典型库链接顺序导致符号未定义问题了。...如果不是相互独立,那么必须它们进行排序,使得对于每个目标文件外部引用符号 s,在命令行中至少有一个 s 定义是在对 s 引用之后。...想想,因为 gcc 顺序要求和 –as-needed(因为 libGalaxyRT.so 在 mutex.o 左边,所以 gcc 认为没有用到它,–as-needed 将其忽略),ld 忽略 libGalaxyRT.so

22800

GCC 编译器使用

链接器处理归档文件方法是:扫描归档文件,寻找某些成员,这些成员符号目前已被引用,不过还没有被定义。但是,如果链接器找到普通 OBJ 文件,而不是库文件,就把这个 OBJ 文件按平常方式链接进来。...main.o sub.o -lgcc -lgcc_eh -lc -lgcc -lgcc_eh /usr/bin/ld: warning: cannot find entry symbol _start...main.o sub.o /usr/bin/ld: warning: cannot find entry symbol _start; defaulting to 08048074 main.o(.text...(9)-u symbol 使链接器认为取消了 symbol 符号定义,从而链接库模块以取得定义。可以使用多个 `-u’选项,各自跟上不同符号,使得链接器调入附加库模块。.../bin/ld: cannot find -lsub collect2: ld returned 1 exit status 可以使用-Ldir 选项将当前目录加入搜索路径,如下则链接成功: $ gcc

3.8K31

企业安全建设之基于Redis未授权访问挖矿蠕虫分析

# 0x01 攻击方式 利用是通用漏洞入侵服务器并获得相关权限,从而植入挖矿程序再进行隐藏。 通过脚本分析,发现黑客主要是利用 `Redis未授权访问漏洞`进行入侵。...借此使用计划任务执行命令, 其中` */1 * * * *` 指的是每分钟执行一次相关命令 整个python文件作用就是蠕虫式传播,使用pythonRedis未授权访问利用,将挖矿文件传播给B段...SHELL=/bin/sh #此脚本使用/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin #环境变量,用于遍历...#创建 新文件ld.so.preload、libntp.so touch -acmr /bin/sh /usr/local/lib/libntp.so } function python() { nohup...函数)并执行 `top() 函数` 以 so 文件劫持 (/etc/ld.so.preload) 方式执行挖矿木马,是更隐蔽执行方式 `python() 函数` 蠕虫式传播,使用pythonRedis

1K20

liteos分散加载(十四)

嵌入式系统通过uboot加载flash上镜像文件到内存并执行,而镜像文件本身可能较大,由于flash读取速度限制,将镜像全部加载完再执行可能无法满足时间敏感业务启动速度要求。...嵌入式系统中可能存在某些业务启动时间要求比较高,譬如Huawei LiteOS IPC项目上从开机到录制预览时间要求较高,可以利用分散加载技术实现录制预览业务快速启动。...编译系统将自动调用工具链抽取分散加载最小镜像符号表并根据该符号表提取分散加载最小镜像.a库列表。...分散加载链接脚本路径:Huawei_LiteOS/tools/scripts/ld/scatter.ld 步骤5 执行tftp 0x82000000 vs_server.bin;nand erase...,没有对应生成.O文件,解决方法是生成对应.O文件并且放到目标目录下 符号未定义 /usr1/xxxxx/gerrit_code/modify-debug/liteos_ipc/out/lib/libar6003

1K10
领券