【发布时间】:2015-03-11 20:33:32
【问题描述】:
考虑c.c 包含a.h 和b.h 的代码,以及main.c 包含c.h 的代码
我试着像这样编译它
gcc --std=c99 -o a.o -c a.c
gcc --std=c99 -o b.o -c b.c
gcc --std=c99 -o c.o -c c.c a.o b.o
但是当我运行最后一个时,gcc 对我大喊大叫
gcc --std=c99 -o c.o -c c.c a.o b.o
gcc: warning: a.o: linker input file unused because linking not done
gcc: warning: b.o: linker input file unused because linking not done
然后当我尝试使用 gcc -o main main.c c.o 编译 main.c 文件时,它说有很多未定义的引用,一旦 c 文件未正确编译,这是可以预测的。
我在 stackoverflow 上看到了一些类似的问题,但我无法让它工作。
我在 Arch Linux 上运行 gcc v4.9.2-3
【问题讨论】:
-
你试过
gcc --std=c99 -o c.o b.o a.o c.c吗? -
在哪个操作系统上,使用哪个版本的 GCC?你为什么要问?你不只是想链接一些可执行文件吗?请编辑您的问题以改进它!
-
@ForceBru 如果我这样做,它会告诉我
undefined reference to main,因为 c.o 不是最终程序,它稍后将与 main.c 一起使用以创建最终的可执行文件
标签: c gcc compilation linker c99