编译一个C文件
gcc -wall hello.c -o hello
会产生一个hello的文件
运行它,./hello
用GCC编译一个错误的代码,
用GCC -wall 编译会给出错误代码定位。GCC不加-wall就不会
GCC编译多个文件:
第一个C文件main.c
#include <stdio,h>
#include "hello.h"
int main(void)
{
hello("hello,world!\n");
return 0;
}
第二个hello.c
#include <stdio.h>
#include "hello.h"
void hello(const char* string)
{ printf(string);
}
cat main.c查看源代码
gcc -wall mian.c hello.c -o newhello
./newhello
C语言中的“”和<>引用头文件的区别
“”,会先去函数当前目录下去找,再去系统头文件中找
<>,直接去系统头文件下去找
verbose Compilation
gcc -v -wall hello.c 可以打出详细的信息
gcc –wall -c main.c 产生.o结尾的目标文件
连接目标文件
gcc mian.o hello.o bbk产生bbk可执行文件
./bbk
这个过程就是gcc调用它里面的ld程序进行的
which gcc
ls -ltr /usr/bin/ld
怎么管理一个庞大的项目
GNU Make
根据文件修改时间的先后,自动构建跟新新的可执行文件
目标文件和源文件如果时间不一致,说明源程序修改了,就需要重新去生成
链接外部库(link with external libraries)
什么是库文件
一个库文件是由若干个一堆目标文件的集合体
.a结尾的是静态库
内部的库可以不显示的链接,但老版本的编译器需要
gcc -Wall main.c /usr/lib/libm.a -o calc
gcc -Wall main.c -lm -o calc
gcc常用命令
1.预处理,生成预编译文件(.i 文件)CPP是(.ii):
gcc –E hello.c –o hello.i
2.编译,生成汇编代码(.s 文件):
gcc –S hello.i –o hello.s//gcc常用命令
1.预处理,生成预编译文件(.i 文件):
gcc –E hello.c –o hello.i
2.编译,生成汇编代码(.s 文件):
gcc –S hello.i –o hello.s
3.汇编,生成目标文件(.o 文件):
gcc –c hello.s –o hello.o
4.链接,生成可执行文件:
gcc hello.o –o hello
有时候,进行调试,可能会用到某个步骤哦
gcc -g hello.c -o hello
3.汇编,生成目标文件(.o 文件):
gcc –c hello.s –o hello.o
4.链接,生成可执行文件:
gcc hello.o –o hello
有时候,进行调试,可能会用到某个步骤哦
gcc -g hello.c -o hello