把学的东西记下来,复习
假设有三个文件:
main.c su.c su.h
内容分别为
#include <stdio.h> int sum(int a,int b); int sum(int a,int b){
#include "sub.h" return a+b;}
void main(void){
int a=10,b=30;
fprintf(stdout,"%d\n",sum(a,b));
}
对三个文件进行编译中,因为有头文件,注意写完后进行保存,当文件名出现*时,说明没有保存
gcc -c -o main.o main.c
gcc -c -o sub.o sub.c
gcc -o test main.c sub.c
生成test文件, ./test 进行执行
$gcc -S -o main.s main.c ,对main.c进行预处理,并将结果打印出来,里面扩展了所有包含的文件、所有定义的宏。
另一种方式:不想以源代码发布程序时,可以使用-shared选项生成库文件。
$gcc -c -o sub.o sub.c
$gcc -shared -o sub.a sub.o
若要使用 sub.c 中包括的函数时,只需要
$gcc -o test main.o ./sub.a
也可以用简单的编译
gcc main.c sub.c -o main
执行./main即可
写成makefile文件:(文件名为makefile)
main:main.o sub.o
gcc main.c sub.c -o main
main.o:main.c sub.h
gcc main.c -o main.o
sub.o:sub.c sub.h
gcc sub.c -o sub.o
clean:
rm -f main *.o
执行时:直接用make 会在文件中需要Makefile文件
make clean 执行动作