当前位置: 技术问答>linux和unix
理解不了的编译连接问题
来源: 互联网 发布时间:2016-03-07
本文导语: 问题如下: 有两个库, 第一个库libmfr.a中XCopyLeaf函数,通过nm libmfr.a | grep XCopyLeaf能够查找到,说明库中有这个函数; 第二个库libmab.a中RunForProt函数使用到了第一个库中的函数XCopyLeaf,第二个库的c文件中也包括了...
问题如下:
有两个库,
第一个库libmfr.a中XCopyLeaf函数,通过nm libmfr.a | grep XCopyLeaf能够查找到,说明库中有这个函数;
第二个库libmab.a中RunForProt函数使用到了第一个库中的函数XCopyLeaf,第二个库的c文件中也包括了第一个库的头文件;
这两个库生成打包都没有问题。
问题是我生成exe文件的时候,使用这两个库就出错:
比如 cc -o a a.c -L../lib -lmfr.a -lmab.a 来编译a.c文件就报如下错误:
/root/PPT/libmabsrc/runforprot.c:38: undefined reference to `XCopyLeaf'
我奇怪的是XCopyLeaf这个函数明明已经编译了,为什么连接的时候找不到?
困惑很久了,期盼大家能给我解解惑!
有两个库,
第一个库libmfr.a中XCopyLeaf函数,通过nm libmfr.a | grep XCopyLeaf能够查找到,说明库中有这个函数;
第二个库libmab.a中RunForProt函数使用到了第一个库中的函数XCopyLeaf,第二个库的c文件中也包括了第一个库的头文件;
这两个库生成打包都没有问题。
问题是我生成exe文件的时候,使用这两个库就出错:
比如 cc -o a a.c -L../lib -lmfr.a -lmab.a 来编译a.c文件就报如下错误:
/root/PPT/libmabsrc/runforprot.c:38: undefined reference to `XCopyLeaf'
我奇怪的是XCopyLeaf这个函数明明已经编译了,为什么连接的时候找不到?
困惑很久了,期盼大家能给我解解惑!
|
调整一下库的顺序试试:
cc -o a a.c -L../lib -lmab.a -lmfr.a
至于为什么看看这里:
http://blog.csdn.net/mymtom/archive/2007/07/01/1674184.aspx
cc -o a a.c -L../lib -lmab.a -lmfr.a
至于为什么看看这里:
http://blog.csdn.net/mymtom/archive/2007/07/01/1674184.aspx