今天编译公司内别人的写的程序,该程序原先是运行在AIX上的,目前没有AIX系统,所以我只好先用linux尝试编译,修改了makefile以后,开始编译。
该程序使用了大量的静态库,这些库就害我寻找并编译了半天,终于到了最后一步连接了,出现了大量函数未定义的错误,我网上查了下是因为静态库的依赖性的问题,于是我调整了顺序,将.o文件放在lib前面,这点似乎无关紧要,我仔细看了错误发现,这些未定义函数的错误原来都是在lib库里边,首先我就发现大量LOG日志记录的函数未定义错误,我就把log的静态库放在所有库的前面,日志函数未定义的错误一下就全消失了,但是还有其他一些错误,我依照此方法,找函数的具体依赖:
lib1.a引用了lib2.a,但是在makefile中lib2.a确实在lib1.a前面呀,为什么总是不行呢,我又网上查,有人说lib库可以出现多次,于是我把lib2.a在lib1.a的前面和后面都放了一次,果然错误消失了,我又把前面的lib2 删除,也没有问题,编译确实通过了。
最后我还是在纳闷这是为什么呢。