社区
Linux/Unix社区
帖子详情
编译连接时候的问题
thisisll
2005-11-30 05:25:54
现在有B.a里面放着b.o
我写了一个a.c
a.c里面调用了b.o的东西
如果我要编译连接a.c
那么
gcc -c a.c
gcc a.o -lB
可是我要把a.o放到B.a里面
那么生成a.o后
就要用ar把a.o放到B.a中了
可是没有连接,也就无法告诉a.o需要的b.o到底在哪里
我该如何??
...全文
134
12
打赏
收藏
编译连接时候的问题
现在有B.a里面放着b.o 我写了一个a.c a.c里面调用了b.o的东西 如果我要编译连接a.c 那么 gcc -c a.c gcc a.o -lB 可是我要把a.o放到B.a里面 那么生成a.o后 就要用ar把a.o放到B.a中了 可是没有连接,也就无法告诉a.o需要的b.o到底在哪里 我该如何??
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
gettext
2005-12-01
打赏
举报
回复
你可能是把编译和连接给弄混了。
thisisll
2005-12-01
打赏
举报
回复
有些问题
不问清楚永远都不清楚
------------------
连接使他得到函数的偏移量
那也就是说
总有个可执行程序在连接的时候最终调用到A.a中的a.o
然后a.o中的那个函数的偏移量就在这个时候得到了
我的理解对吗?
thisisll
2005-12-01
打赏
举报
回复
我也不想这样~~
饶着确实累啊
算了
大家休息吧~~
揭贴了~~~
lixiaosan
2005-12-01
打赏
举报
回复
就是整得有点麻烦了 。。。
直接弄到一个 .a就可以了。。。绕来绕去的。。人都绕昏了。。:)
yjf7888
2005-12-01
打赏
举报
回复
可以,没有问题
thisisll
2005-12-01
打赏
举报
回复
请楼上赐教
我之前就是看了这里才这么多莫名其妙的想法的
http://www-128.ibm.com/developerworks/cn/linux/l-dynlink/index.html#N10043
tb01412
2005-11-30
打赏
举报
回复
你难道不可以全部编译成.o文件之后再一起打包成库吗?????????简单的问题复杂化!!!
thisisll
2005-11-30
打赏
举报
回复
连接使他得到函数的偏移量
那也就是说
总有个可执行程序在连接的时候最终调用到A.a中的a.o
然后a.o中的那个函数的偏移量就在这个时候得到了
我的理解对吗?
bekars
2005-11-30
打赏
举报
回复
都放到B.a里了
那a.o就能找到b.o了吗?
从一开始我都没有告诉a.o他需要的函数在b.o中啊
当然可以!
如果我想把B.a放到A.a里
然后把a.o也放到A.a里
那a.o怎么知道他要的在A.a中的B.a中
所以的静态链接库相当于一个模块,所有的函数都是可见的(只要你包含正确的头文件),所以a.o可以找到它需要的东西。
thisisll
2005-11-30
打赏
举报
回复
还有问题
如果我想把B.a放到A.a里
然后把a.o也放到A.a里
那a.o怎么知道他要的在A.a中的B.a中
thisisll
2005-11-30
打赏
举报
回复
都放到B.a里了
那a.o就能找到b.o了吗?
从一开始我都没有告诉a.o他需要的函数在b.o中啊
bekars
2005-11-30
打赏
举报
回复
晕,需要这么复杂吗?
你直接将编译好的b.o和a.o一起ar为B.a不就可以了,不要把问题复杂化。
汇编程序
编译
连接
过程
这章开始,我们将编写完整的汇编语言程序,用
编译
和
连接
程序将它们
连接
成可执行文件(如.exe文件)在DOS中运行。
交叉
编译
时候如何配置
连接
库的搜索路径
交叉
编译
的时候不能使用本地(i686机器,即PC机器,研发机器)机器上的库,但是在做
编译
链接的时候默认的是使用本地库,即/usr/lib,/lib两个目录。因此,在交叉
编译
的时候,要采取一些方法使得在
编译
链接的时候找到...
程序编辑,程序
编译
,程序
连接
。
程序编辑:上机输入或者编辑源程序。 程序
编译
: ①先用C提供的“预处理器”,对程序中的预处理指令进行...程序
连接
:将所有
编译
后得到的目标模块
连接
装配起来,在与函数库相
连接
成为一个整体的过程称之为程序
连接
...
程序
编译
+
连接
的简单过程
1.程序的翻译环境和执行环境 在ANSI C的任何一种实现(
编译
器)中,存在两个不同的环境。 第1种是翻译环境,在这个环境中源代码被转换为可执行的机器指令。...C语言源代码经过
编译
会生成一个目标文件,目标
编译
连接
的四步
2.
编译
链接的四步 (1)预
编译
: gcc -E main.c -o main.i (2)
编译
gcc -S main.i -o main.s (3)汇编 gcc -c main.s -o main.o (4)链接 gcc main.o -o main 执行: ./main 或者:全路径/main 3.
编译
链接的过程 ...
Linux/Unix社区
23,120
社区成员
74,507
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章