在Linux档案中,档案通常是目标文件的集合,并使用AR工具创建,例如: :
% ar -cr libfoo.a a.o b.o c.o
现在,在使用gcc编译代码并将其与归档链接时,我想了解目标文件的顺序是否包含在内。 例如,考虑:
% gcc obj/a1.o obj/a2.o obj/a3.o libfoo.a -o main
如果obj / a3.o使用libfoo.a中定义的符号,则libfoo.a应放在a3.o之前:
% gcc libfoo.a obj/a1.o obj/a2.o obj/a3.o -o main
我在编译第三方软件包时发现它,除非我更改了订单,否则我收到“未定义引用”错误:
a3.o: In function 'my_func': undefined reference to 'my_symbol'
这是正常和预期的,或者我的设置中有什么问题?
感谢。