- 1
- 2
- 3
- 4
- 5
libevent的链接顺序源文件在前库在后.docx
资料介绍
libevent 的链接顺序:源文件在前,库在后
一个隐蔽的链接坑
用 libevent 写程序,编译链接时有一个特别容易踩的坑:链接器报 undefined reference,但明明加了 -levent。问题的根源,是链接参数的顺序。
这篇文章讲 libevent 链接顺序的坑,以及为什么"源文件在前、库在后"。
链接器的处理顺序
GNU ld(链接器)处理库和对象文件的顺序,是从左往右。
当链接器处理一个库文件时,它会记录库里定义了哪些符号,但只解析"已经被引用的"未定义符号。
如果库文件出现在源文件之前,链接器处理库时还不知道源文件需要哪些符号,等处理源文件产生未定义引用时,链接器不会回头再处理库。
所以,库文件必须在源文件之后,链接器才能解析符号。
错误的顺序
看一个错误示例。
gcc -levent test.c -o test
这里 -levent 在 test.c 前面。链接器先处理 libevent,但此时还没有 test.c 产生的未定义引用,所以 libevent 里的函数没有被"拉入"。等处理 test.c 时,产生对 event_base_new 等的未定义引用,但链接器不会回头再找 libevent。
结果就是 undefined reference。
部分文件列表
| 文件名 | 大小 |
| libevent的链接顺序源文件在前库在后.docx | 37K |
最新上传
-
21ic小能手 打赏5.00元 17小时前
资料:磁编码器开源方案
-
21ic小能手 打赏5.00元 17小时前
-
21ic小能手 打赏5.00元 17小时前
-
江岚 打赏20.00元 3天前
-
江岚 打赏50.00元 3天前
-
江岚 打赏20.00元 3天前
-
江岚 打赏10.00元 3天前
-
21ic小能手 打赏10.00元 3天前
-
21ic小能手 打赏8.00元 3天前
-
21ic小能手 打赏8.00元 3天前
-
21ic小能手 打赏5.00元 3天前
-
21ic小能手 打赏3.00元 3天前
-
tangyu1 打赏1.00元 3天前
-
jjjjkkkkk 打赏1.00元 3天前
-
emlimei 打赏1.00元 3天前
-
21ic小能手 打赏5.00元 3天前
-
21ic小能手 打赏3.00元 3天前
资料:低频功率放大器的设计.
-
21ic小能手 打赏3.00元 3天前
-
21ic小能手 打赏3.00元 3天前
-
21ic小能手 打赏3.00元 3天前
-
21ic小能手 打赏3.00元 3天前
-
21ic小能手 打赏5.00元 3天前
资料:51单片机数字频率计
-
21ic小能手 打赏5.00元 3天前
-
21ic小能手 打赏5.00元 3天前
-
21ic小能手 打赏5.00元 3天前
-
13573902396 打赏1.00元 3天前
-
21下载积分 打赏310.00元 3天前
用户:江岚
-
21下载积分 打赏310.00元 3天前
用户:潇潇江南
-
21下载积分 打赏60.00元 3天前
用户:他山之石可攻玉
-
21下载积分 打赏310.00元 3天前
用户:小猫做电路
-
21下载积分 打赏210.00元 3天前
用户:zhengdai
-
21下载积分 打赏210.00元 3天前
用户:w993263495
-
21下载积分 打赏10.00元 3天前
用户:烟雨
-
21下载积分 打赏60.00元 3天前
用户:gsy幸运
-
21下载积分 打赏70.00元 3天前
用户:铁蛋锅
-
21下载积分 打赏65.00元 3天前
用户:xzxbybd
-
21下载积分 打赏60.00元 3天前
用户:jh0355
-
21下载积分 打赏60.00元 3天前
用户:w178191520
-
21下载积分 打赏20.00元 3天前
用户:jh03551
-
21下载积分 打赏20.00元 3天前
用户:sun2152




全部评论(0)