GCC学习笔记
来源:互联网 发布:淘宝店铺首页怎么弄 编辑:程序博客网 时间:2024/05/21 22:23
1.简介
GCC(GNU Compiler Collection,GNU编译器集合)是一套由GNU工程开发的支持多种编程语言的编译器。GCC是自由软件发展过程中的著名例子,由自由软件基金会以GPL协议发布。GCC是大多数类Unix操作系统(如Linux、BSD、Mac OS X等)的标准的编译器,GCC同样适用于微的Windows。GCC支持多种计算机体系芯片,如x86、ARM,并已移植到其他多种硬件平台。GCC原名为GNU C编译器(GNU C Compiler),因为它原本只能处理C语言。GCC很快地扩展,并支持处理C++。后来又扩展能够支持更多编程语言,如Fortran、Pascal、Objective-C、Java、Ada、Go等。
2.文件约定
3.程序的编译过程
test.c test.h——预处理——>test.i——编译——>test.s——汇编 ——>test.o ——链接——>test
原文件 | | 汇编文件 | 机器语言 | 二进制可执行
(1)预处理
处理源文件中的#ifdef、 #include和#define命令
gcc -E test.c -o test.i
(2)编译
编译后生成汇编语言文件*.s
GCC -S test.i -o test.s
(3)汇编
将输入的汇编文件*.s转换成机器语言*.o
GCC -c test.s -o test.o
(4)链接
在连接阶段将输入的机器代码文件*.s(与其它的机器代码文件和库文件)汇集成一个可执行的二进制代码文件。
GCC test.o -o test
注:一般来说前三个步骤合并为一个步骤:
GCC -c test.c -o test.o
或者
四个步骤合并为一个步骤:
GCC -o test test.c
4. 链接参数(-l/L)
(1)-l 指定程序要链接的库名。
如:数学库,库文件名是libm.so,库名是m,把库文件名的头lib和尾.so去掉就是库名了。
命令:libxxx.so -lxxx
-l 可以直接链接的库必须放在: /lib, /usr/lib, /usr/local/lib 中
(2)-L 指定链接目录
如果要链接的库不在上述的目录下,必须使用-L指定库的目录。如X11的库,它放在/usr/X11R6/lib目录下。
命令: -L/usr/X11R6/lib -lX11
5. include : -I 指定header 目录
/usr/lib 不用指定
例如,假设存放源文件的子目录名为./src,而包含文件则放在层次的其他目录下,如./inc。当我们在./src 目录下进行编译工作时:
gcc test.c –I../inc -o test
指定多个include文件:
gcc test.c –I../inc –I../../inc2 -o test
6. 编译优化 -O
7. -share 编译动态链接库
- GCC 学习笔记
- GCC学习笔记
- gcc命令学习笔记
- gcc学习笔记
- gcc学习笔记
- gcc学习笔记
- gcc/g++学习笔记
- gcc学习笔记
- GCC学习笔记
- GCC学习笔记
- GCC用法学习笔记
- gcc,g++ 学习笔记
- GCC学习笔记1
- gcc学习笔记
- Linux - gcc 学习笔记
- gcc学习笔记
- GCC学习笔记
- gcc学习笔记
- Oracle 使用RMAN COPY 移动 整个数据库 位置 示例
- Activity 启动模式
- indy组件在2010的重装
- jquery读取json格式
- 我来理解extern "C"
- GCC学习笔记
- 分享一个好用的免费查找PCB封装尺寸的软件工具
- 第三届蓝桥杯预赛java组第二题比酒量
- 百度地图 Android版 隐藏logo
- Jquery-Cookie
- RMAN 备份异机恢复 并创建新DBID
- android四大组件之一Service的startService()与bindService()区别?
- 从 Objective-C 里的 Alloc 和 AllocWithZone 谈起
- 时间o(n)空间o(1) 奇在前偶在后