我有几个 .c 文件和一个 .a 目标文件。我应该使用 gcc 的什么命令将它们编译为一个 exe 文件?如果我们使用makefile,它会是什么样子?
问问题
33000 次
3 回答
21
对于简单的情况,您可能可以这样做:
gcc -o maybe.exe useful.a something.c
重要项目的 Makefile 通常首先调用 gcc 将每个 .c 文件编译为 .o 对象。
gcc -c something.c
然后他们使用 .o 和 .a 文件列表调用链接器(这些天经常使用 gcc 作为它的包装器)以链接到输出可执行文件。
gcc -o maybe.exe useful.a something.o
另请注意,对于大多数已安装的库,通常不会显式指定 .a 文件,而是说 -lhandy 是“尝试在配置的(或使用 -L 指定的)搜索目录中查找名为 libhandy.a 的东西的缩写"
于 2012-05-04T18:41:05.710 回答
7
*.a
是一个静态库而不是动态的(*.dll
在 windows 和*.so
linux 中)
gcc -L<here comes the library path> -l<library name>
例如对于您在当前路径中有 libname.a 的文件,您应该使用:
gcc *.c -L. -lname -o myprogram.o
来自man(将 man gcc 放在 shell 命令提示符中)
您可以混合使用选项和其他参数。在大多数情况下,您使用的顺序无关紧要。当您使用多个相同类型的选项时,顺序确实很重要。例如,如果您多次指定 -L,则会按指定的顺序搜索目录。此外,-l 选项的位置也很重要。
于 2012-05-04T18:44:12.133 回答
4
.a 文件是一个库,已经编译。您将 .c 文件编译为 .o,然后使用链接器将 .o 与 .a 链接以生成可执行文件。
于 2012-05-04T18:34:59.193 回答