命令用.a文件编译c文件

pyt*_*nic 9 c linux gcc x86-64

我有几个.c文件和一个.a目标文件.我应该使用gcc命令将它们编译为一个exe文件?如果我们使用makefile,它会是什么样子?

Chr*_*ton 16

对于简单的情况,您可以这样做:

gcc -o maybe.exe useful.a something.c
Run Code Online (Sandbox Code Playgroud)

用于非平凡项目的Makefile通常首先调用gcc将每个.c文件编译为.o对象.

gcc -c something.c
Run Code Online (Sandbox Code Playgroud)

然后他们调用链接器(这些天经常使用gcc作为它的包装器),并带有一个.o和.a文件列表,用于链接到输出可执行文件.

gcc -o maybe.exe useful.a something.o
Run Code Online (Sandbox Code Playgroud)

另请注意,对于大多数安装的库,这是典型的不明确指定某文件,而是说-lhandy这将是短期的"试图找到在配置(或-L指定)搜索目录一种叫做libhandy.a "


0x9*_*x90 6

*.a是一个静态库而不是动态库(*.dll在 windows 和*.solinux 中)

gcc -L<here comes the library path> -l<library name>
Run Code Online (Sandbox Code Playgroud)

例如,对于当前路径中包含 libname.a 的文件,您应该使用:

gcc *.c -L. -lname -o myprogram.o
Run Code Online (Sandbox Code Playgroud)

来自man(将 man gcc 放在 shell 命令提示符中)

您可以混合使用选项和其他参数。在大多数情况下,您使用的顺序并不重要。当您使用多个同类选项时,顺序很重要;例如,如果您多次指定 -L,将按指定的顺序搜索目录。此外,-l 选项的位置也很重要。


TJD*_*TJD 3

.a 文件是一个已编译的库。将 .c 文件编译为 .o,然后使用链接器将 .o 与 .a 链接起来以生成可执行文件。

  • 没有回答有关*如何*做到这一点的问题。没有说“它会是什么样子”。 (11认同)