日期:2014-05-16  浏览次数:20675 次

请问为何做出的.o文件找不到函数符号
请问,我在linux下新写了一些函数文件编入到lib库文件中,最后和其他lib一起来做.o文件,结果发现新写的函数符号在刚编出的.o找不到,而我查看了做的lib中却是有这个符号,我听别人说好像找不到函数符号的必须要在.o中的其他可以找到符号的函数中调用一下才能找到,请问这个是怎么回事呢?我的lib是静态库文件,又不是动态连接库文件,则那么库文件的符号为何没有在编译时全部编入到.o文件中呢?
希望各位大侠给指点下,谢谢~~

------解决方案--------------------
.a 就是一堆.o放在一起,不要用.a去生成.o了。
根据楼主的情况只需要把自己的.c用cc编译成.o,然后用ar加到一个.a,在其它程序中就可以使用了。

------解决方案--------------------
LZ把编译步骤贴出来看看
------解决方案--------------------
楼主要区别编译和链接的概念.
.o是编译的产物, 是链接的元素.
.a是链接的产物, 是链接的元素.

也就是说你对.a静态库的应用应该只能是在链接时, 而不能是在编译期.
------解决方案--------------------
.a是链接的产物, 是链接的元素.
====
.a是链接的产物?不是吧,ar只是吧.o放在一起而已
.so是链接的产物
------解决方案--------------------
我们一般是直接把lib库做成bin文件。
------解决方案--------------------
Unix下静态库.a就是一堆.o用ar生成的archive,再做成.o,这有问题吧?