社区
C语言
帖子详情
linux下编译C源文件链接库顺序问题
寻找Python之禅
2011-11-01 07:42:37
今天在编译一个C可执行程序时,连接啦两个自定义静态库,在这两个库里都有一个相同名称的函数,参数列表也完全一样,只有函数体内容有些许区别。执行可执行程序后发现结果不是想要的。后来把两个静态库的属性对调啦一下,再次执行可执行程序后就得到啦想要的结果。 编译时是如何确定使用两个库中相同名称的函数中的哪一个的?请求各位高人给以解答,另希望高人们传授这方面的详细知识,谢谢!
...全文
346
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语言在
linux
环境下的
编译
、链接以及静态库、动态库的一些命令的使用。 一、
编译
与链接 GCC的
编译
流程分为四个步骤: 1、预处理(Pre-processing):处理以#开头的句子 2、
编译
(Compiling):...
Linux
下gcc
编译
生成动态
链接库
*.so文件并调用它
动态库*.so在
linux
下用c和c++编程时经常会碰到,最近在网站找了几篇文章介绍动态库的
编译
和链接,总算搞懂了这个之前一直不太了解得东东,这里做个笔记,也为其它正为动态库
链接库
而苦恼的兄弟们提供一点帮助。...
Linux
上C语言程序
编译
过程详解
侵删本文将介绍如何将高层的C/C++语言编写的程序转换成为处理器能够执行的二进制代码的过程,包括四个步骤:预处理(Preprocessing)
编译
(Compilation)汇编(Assembly)链接(Linking)GCC 工具链介绍通常所说的...
C++
源文件
编译
过程
对于C++
源文件
,从文本到可执行文件一般需要四个过程:预处理阶段→
编译
阶段→汇编阶段→链接阶段。 预处理阶段:对源代码文件中文件包含关系(头文件)、预
编译
语句(宏定义)进行分析和替换,主要是处理源代码...
linux
中静态库
编译
与使用
linux
静态库的
编译
与连接
C语言
69,322
社区成员
243,077
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章