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

时间:2012-05-04 18:30:56

标签: c linux gcc x86-64

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

3 个答案:

答案 0 :(得分:15)

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

gcc -o maybe.exe useful.a something.c

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

gcc -c something.c

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

gcc -o maybe.exe useful.a something.o

另请注意,对于大多数已安装的库,通常不显式指定.a文件,而是说-lhandy,这对于“尝试在配置中找到名为libhandy.a的东西(或使用-L指定”)来说是简短的)搜索目录“

答案 1 :(得分:4)

*.a是一个静态库,不是动态的(Windows中为*.dll,Linux中为*.so

gcc -L<here comes the library path> -l<library name>

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

gcc *.c -L. -lname -o myprogram.o

来自man(在shell命令提示符下输入man gcc)

  

您可以混合选项和其他参数。在大多数情况下,订单   你使用没关系。使用多个选项时,订单很重要   相同的;例如,如果指定-L多次,则   按指定的顺序搜索目录。此外,安置   -l选项很重要。

答案 2 :(得分:1)

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