linux中用C语言编写完模块后怎么编写makefile文件?用到什么命令?以什么格式编写?

上周 你说的这个Makefile是对的。

viMakefile 打开vi编辑器。

输入内容: 当只有一个文件需要编译的时候 filename: filename.c gcc -o filename filename.c
filename: filename.c 指的是filename文件的生成要依赖filename.c文件
然后换行,按Tab键,编写编译规则。

make命令一般是同时编译多个文件时才使用。

filename1 : filename1 .c gcc -o filename1 filename1 .c
filename2 : filename2 .c gcc -o filename2 filename2 .c
编译多个需要依赖(互相调用的文件) main: main.o file1 .o file2 .o gcc -o main main.o file1 .o file2 .o
main.o: main.c gcc -c main.c
file1 .o: file1 .c gcc -c file1 .c
file2 .o: file2 .c gcc -c file2 .c
这样就可以用了。

例子: include "mytool1 .h" void mytool1 _print(char print_str) { printf("This is mytool1 print %s\n", print_str); }
/ mytool2 .h / ifndef MYTOOL_2 _H define MYTOOL_2 _H void mytool2 _print(char print_str); endif
/ mytool2 .c / include "mytool2 .h" void mytool2 _print(char print_str) { printf("This is mytool2 print %s\n", print_str); }
编译命令: gcc -c main.c gcc -c mytool1 .c gcc -c mytool2 .c gcc -o main main.o mytool1 .o mytool2 .o
Makefile文件: main: main.o mytool1 .o mytool2 .o gcc -o main main.o mytool1 .o mytool2 .o
main.o: main.c mytool1 .h mytool2 .h gcc -c main.c
mytool1 .o: mytool1 .c mytool1 .h gcc -c mytool1 .c
mytool2 .o: mytool2 .c mytool2 .h gcc -c mytool2 .c
修改文件后,执行make命令,只会编译修改的文件。

开始的行是注释行。

Makefile中最重要的是描述文件的依赖关系。

格式: target:components TAB rule
target表示目标文件,components表示依赖文件,TAB表示Tab键。

算了。

linux怎么运行c程序

说白了,gcc确实是Linux下编译源代码的利器,支持多种语言,连Linux内核都是用它编译的。
其实很简单,比如编译一个打印“Hello, Linux.”的简单程序,步骤是这样的:
先说最重要的,把源代码保存为hello.c,然后执行命令$gcc -o hello hello.c,编译成功后,在当前路径下会生成一个名为hello的可执行文件。
另外一点,编译多个源文件也很简单,只要把所有源文件一起加到gcc命令里即可。
还有个细节挺关键的,比如使用外部函数库,只需在gcc命令后加上-lLIBRARY即可。

我一开始也以为gcc就是单纯地编译,后来发现它还能生成调试信息、优化代码等高级功能。
等等,还有个事,比如-g选项会生成调试信息,方便调试程序;-O选项则是用来优化代码,提高执行效率。

其实挺坑的是,如果不指定输出文件名,默认会生成一个名为a.out的文件,这可能会导致重名覆盖问题。
所以,我觉得使用-o FILE指定输出文件名是个好习惯。

最后提醒一下,gcc还有很多其他选项,比如-ansi只支持ANSI标准的C语法,-m4 8 6 则是针对4 8 6 处理器优化代码。
这个点很多人没注意,但是了解这些选项可以帮助你更好地使用gcc。
我觉得值得试试的是,先从常用选项开始,等熟悉后再慢慢尝试其他高级选项。