打印
[开发资料]

查找连接错误

[复制链接]
401|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
szt1993|  楼主 | 2025-3-25 21:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
例:
学生:        我的程序编译没错,为什么系统说不能连接,不能产生可执行程序?
老师:        那说明程序的外部变量、函数的名字方面出了些问题。这些问题比较简单,但修改时也要特别小心,不要把其他正确的东西改错了。

连接是编译完成后的下一个程序加工步骤。在这个步骤中,连接程序的工作对象是:
1)由你所编写的程序源文件产生的目标文件(一个或者几个);
2)语言系统提供的一些目标代码文件,包括基本运行模块(也称为运行系统)和库文件。

连接程序的工作包括两部分:
1)将所有需要的目标代码拼装到一个文件中(这是最后可执行文件的基础);
2)将外部对象的使用和定义连接起来,包括所有函数调研的实际调用代码的建立,正确设置所有外部变量的使用。

连接错误有两类:

1)缺定义。当程序中出现对某个外部对象的使用,而连接程序找不到对应的定义时,将产生这个错误。
2)重复定义。当被连接的各个部分中出现某个名字的多个定义时,将产生这个错误。


缺定义错误的常见原因:
1)名字拼写错误。例如将 main 拼写为 mian,连接时就会产生缺定义的连接错误。因为程序的基本允许模块里有一个对 main 的调用,连接程序需要找它的定义而没有找到。调用自己的函数名字写错的情况也很常见。

2)真的就是没有定义。例如你想调用一个非标准的C库函数,而你所用的系统里没有。或者是你要调用的自定义函数忘了定义。有时也有这样的情况,系统里有这个函数,但需要特别设置才能够找到它(因为函数放在某个非标准的库文件里),解决这种问题需要查阅有关的系统手册,这里不讨论了。

如果真是缺了定义,那就只能设法补上。


使用特权

评论回复
沙发
tpgf| | 2025-4-8 14:25 | 只看该作者
核对单片机的串口配置(如波特率、数据位、停止位等)是否与上位机或其他通信设备一致

使用特权

评论回复
板凳
heimaojingzhang| | 2025-4-9 22:15 | 只看该作者
确保时钟信号正确且稳定。若时钟信号不正确或不稳定,单片机可能无法正常工作

使用特权

评论回复
地板
keaibukelian| | 2025-4-10 17:59 | 只看该作者
仔细检查编译器输出的错误信息,确定错误的类型和位置

使用特权

评论回复
5
paotangsan| | 2025-4-10 19:47 | 只看该作者
根据错误提示,修复语法错误、拼写错误、函数未定义或变量未声明等问题

使用特权

评论回复
6
renzheshengui| | 2025-4-10 21:33 | 只看该作者
使用调试器逐步执行代码,并检查程序执行过程中的变量值和条件判断是否符合预期

使用特权

评论回复
7
wowu| | 2025-4-10 23:21 | 只看该作者
设置断点,当程序执行到断点处时暂停执行,观察断点处的变量值和寄存器状态,以帮助找出错误的原因

使用特权

评论回复
8
nqty| | 2025-4-18 16:44 | 只看该作者
你说的查找连接错误是啥啊?数据库吗

使用特权

评论回复
9
gra22ce| | 2025-4-18 17:50 | 只看该作者
调用了某个函数或使用了某个变量,但链接器找不到它的定义。可能是:函数或变量声明了但未定义。链接时未包含实现该函数的目标文件或库

使用特权

评论回复
10
eleg34ance| | 2025-4-18 19:06 | 只看该作者
同一个符号在多个目标文件或库中被定义。可能是:在多个源文件中重复定义了全局变量或函数。静态库或动态库中存在重复的符号。

使用特权

评论回复
11
nuan11nuan| | 2025-4-18 20:17 | 只看该作者
链接时未指定所需的库文件。可能是:忘记在编译命令中添加 -l 选项。库文件路径未正确设置

使用特权

评论回复
12
清芯芯清| | 2025-4-18 21:30 | 只看该作者
确保所有声明的函数和变量都有对应的定义。如果 myfunc.c 未包含在编译命令中,会导致 undefined reference to 'myFunction' 错误。

使用特权

评论回复
13
hight1light| | 2025-4-18 22:59 | 只看该作者
一般需要函数声明和定义的签名一致。

使用特权

评论回复
14
pe66ak| | 2025-4-19 09:13 | 只看该作者
避免在多个源文件中定义同名全局变量。如果需要在多个文件中共享变量,可以使用 extern 关键字。

使用特权

评论回复
15
ewyu| | 2025-4-19 11:25 | 只看该作者
建议确保链接时包含了所有需要的库文件。

使用特权

评论回复
16
hhdhy| | 2025-4-19 14:21 | 只看该作者
最好每个符号只在一个目标文件中定义。

使用特权

评论回复
17
yuliangren| | 2025-4-19 16:34 | 只看该作者
如果需要在多个文件中使用某个函数,可以将其定义放在一个源文件中,并在其他文件中声明。

使用特权

评论回复
18
LOVEEVER| | 2025-4-20 14:14 | 只看该作者
还是需要注意细节的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

321

主题

2514

帖子

6

粉丝