GCC编译多个文件问题

时间:2016-01-19 17:19:29

标签: c linux gcc linker

我有一个编译的C文件,名为Hello.o。在Hello.o中:  我有一个主要功能 和一个名为int myfunc()的函数。

我想知道我是否要创建一个包含main函数的新文件hello2.c,并在hello2.c的顶部声明myfunc,  我能编译hello2.c并使用gcc命令将hello.o链接到它吗?

提前全部谢谢。

2 个答案:

答案 0 :(得分:0)

如果你想在hello2.c中使用myfunc(),可以尝试使用gcc.Declare头文件Hello.h中的函数链接两个对象文件,并将其包含在hello2.c中并生成Hello.o和hello2.c之前将它们链接在一起 $ gcc -o输出Hello.o hello2.o

我认为这应该可以帮到你

How do I link object files in C? Fails with "Undefined symbols for architecture x86_64"

答案 1 :(得分:0)

目标文件完全链接,或根本不链接。所以这不起作用。

GCC将命令行中指定的所有文件添加为二进制文件.o。然后使用库(.a)来查找所需的符号。

如果存在重复的符号,则会报告错误。 (它不知道哪个主要)。

如果库包含多个.o文件,则可以忽略不需要的.O文件。这些可能与二进制文件重复。