我有几个.c文件和一个.a目标文件。我应该使用gcc命令将它们编译为一个exe文件?如果我们使用makefile,它会是什么样子?
答案 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链接以生成可执行文件。