gpt4 book ai didi

使用 gcc 编译多个 C 文件

转载 作者:太空狗 更新时间:2023-10-29 16:39:31 25 4
gpt4 key购买 nike

我有两个文件,main.omodules.o,我正在尝试编译它们以便 main.o可以调用 modules.o 中的函数。我被明确告知不要尝试 #include module.o。我真的不知道我应该做什么。我尝试了几个不同版本的 gcc(例如 gcc -x c driver main.o modules.o),但没有任何效果:编译器不断返回

error: called object is not a function

.o 文件是我的源代码文件(我被指示将我的源代码放在扩展名为 .o 的文件中。)我该怎么做才能编译它?

最佳答案

如果你有两个源文件,你可以在不链接的情况下将它们编译成目标文件,如下所示:

gcc main.c -o main.o -c
gcc module.c -o module.o -c

其中 -c 标志告诉编译器在编译阶段结束后停止,而不进行链接。然后,您可以这样链接您的两个目标文件:

gcc -o myprog main.o module.o

这是完全正常的行为,您通常会让您的 makefile 单独编译并在最后链接它们,因此您不必在每次更改其中一个时都重新编译每个源文件。

谈论 main.o “在”module.o 中调用函数非常好,但是 .o 文件不是 < em>source 文件,它是一个编译过的object 文件。如果“将我的源代码放入扩展名为 .o 的文件中”实际上意味着“将我的源代码编译为扩展名为 .o 的文件”,那么情况会变得更加复杂感觉。

关于使用 gcc 编译多个 C 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18777326/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com