编译连接时候的问题

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 打赏 收藏 转发到动态 举报
写回复
用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不就可以了,不要把问题复杂化。

23,120

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧