社区
C语言
帖子详情
linux下编译C源文件链接库顺序问题
寻找Python之禅
2011-11-01 07:42:37
今天在编译一个C可执行程序时,连接啦两个自定义静态库,在这两个库里都有一个相同名称的函数,参数列表也完全一样,只有函数体内容有些许区别。执行可执行程序后发现结果不是想要的。后来把两个静态库的属性对调啦一下,再次执行可执行程序后就得到啦想要的结果。 编译时是如何确定使用两个库中相同名称的函数中的哪一个的?请求各位高人给以解答,另希望高人们传授这方面的详细知识,谢谢!
...全文
399
4
打赏
收藏
linux下编译C源文件链接库顺序问题
今天在编译一个C可执行程序时,连接啦两个自定义静态库,在这两个库里都有一个相同名称的函数,参数列表也完全一样,只有函数体内容有些许区别。执行可执行程序后发现结果不是想要的。后来把两个静态库的属性对调啦一下,再次执行可执行程序后就得到啦想要的结果。 编译时是如何确定使用两个库中相同名称的函数中的哪一个的?请求各位高人给以解答,另希望高人们传授这方面的详细知识,谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lengxujun
2011-11-01
打赏
举报
回复
[Quote=引用 2 楼 seucs 的回复:]
在gcc中,静态库的链接是按照你给的 -l 选项的顺序从左往右依次扫描的,你想要连接函数要放在最左边,如 liba 里面有一个 void hello(); 函数, libb 里面也有一个函数原型和 liba一模一样的函数,如果你需要调用的是 liba 中的,则给的链接顺序应为: -la -lb ,即 liba在前
若你想要链接libb里面的hello函数,则应将链接选项的顺序写为: -lb -l……
[/Quote]
更详细的细节可参考ld文档:
http://sourceware.org/binutils/docs/ld/index.html
柯本
2011-11-01
打赏
举报
回复
新版的gcc中,缺省情况下,重复定义是要报错的
multiple definition of 'xxx'
但ld有个选项,--allow-multiple-definition充许重复定义.
在gcc中可以这样写
gcc -Wl,--allow-multiple-definition ...
库/源文件/.o文件的编译/连接顺序为从左到右
也说是说连接时,从左边开始,只要找到合适的函数,就先会加入程序
seucs
2011-11-01
打赏
举报
回复
在gcc中,静态库的链接是按照你给的 -l 选项的顺序从左往右依次扫描的,你想要连接函数要放在最左边,如 liba 里面有一个 void hello(); 函数, libb 里面也有一个函数原型和 liba一模一样的函数,如果你需要调用的是 liba 中的,则给的链接顺序应为: -la -lb ,即 liba在前
若你想要链接libb里面的hello函数,则应将链接选项的顺序写为: -lb -la,即 libb在前
qq120848369
2011-11-01
打赏
举报
回复
这个不重定义就不错了。
Linux
中C/C++程序
编译
过程与动静态
链接库
概述
本文围绕C/C++程序开发与
链接库
展开。介绍了C/C++程序开发的预处理、
编译
、汇编、链接四个步骤,阐述了动态
链接库
和静态
链接库
的特点及管理,还说明了在云服务器上安装C/C++静态库和
编译
工具的方法,最后探讨了编程语言和
编译
器出现的先后
顺序
。
Linux
下
编译
C/C++项目指定头文件和
链接库
搜索路径
本文详细解析了
Linux
环境下头文件与库文件的搜索路径,包括gcc
编译
器的预处理指令、环境变量设置、
链接库
文件路径及搜索
顺序
,并介绍了如何使用pkg-config简化第三方库的链接。
linux
编译
c文件_Makefile文件是什么?
该博客主要介绍了Makefile,它是
Linux
(Unix)开发中必须掌握的技能,可描述工程
编译
和链接规则,使项目
编译
自动化。以
Linux
下C语言开发为例,阐述了手动
编译
多
源文件
时会遇到
链接库
、耗时等
问题
,而Makefile能简化操作、缩短
编译
时间,提高
编译
效率。
Linux
下C编程使用动态
链接库
本文介绍
Linux
环境下C语言使用动态
链接库
的方法,包括头文件引入、
编译
选项、常用函数、库查找方式及示例。
Linux
下查找头文件和库的
顺序
本文详细解释了在
Linux
环境下,C语言
编译
时头文件和库文件的搜索
顺序
,包括-I选项、-L选项、-l选项以及LD_LIBRARY_PATH的作用,还提到了如何正确设置动态
链接库
搜索路径以避免运行时找不到库的
问题
。,
C语言
70,038
社区成员
243,247
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章