GCC编译

编译一个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


版权声明:本文为qq_29064443原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。