【linux】浅谈Linux下的gcc编译器和"Makefile"文件
来源:互联网 发布:怎样做网络主播 编辑:程序博客网 时间:2024/05/18 13:07
编译器( gcc 、g++):
预处理—— 取消注释、宏替换、.h文件展开(文件包含)、条件编译 。预处理指令是以#号开头的代码行。
编译 —— c语言->汇编代码
汇编 ——汇编代码 转换为目标文件,机器可识别代码
链接 ——可执行文件(库文件.lib(静态库.a) .dil(动态库.so))库文件为目标文件
静态链接、动态链接。 libc是c语言标准库,gcc为默认动态连接
静态链接-优点:不限制平台(平台无关性),效率高--缺点:占空间、
动态连接-优点:节省存储空间--缺点:限制平台、效率低,花费时间
编译链接-------
gcc的使用E S c编译 (esc) 后缀 .i .s .o (ios径向文件)
选项“-o”是指目标文件 -o 文件件 输出到 ⽂文件
“-E”查看 让 gcc 在预处理结束后停止编译过程
“-S”来查看,该选项只编译不汇编,形成汇编代码。
“- c”可看到汇编代码已转化为“.o”的二 进制目标代码
链接----系统把函数实现都被做到名为 libc.so.6 的库文件中去了,gcc会去连接libc.so.6库,实现函数“printf ”。
Makefile:
makefile 定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因 为makefile 就像一个Shell 脚本一样,其中也可以执行操作系统的命令。
make--命令,makefile--当前目录下的文件
$@:目标文件
$^:所有的依赖文件
$<:第一个依赖文件
Makefile文件2:<省略具体编译过程,直接执行-o操作>
.PHONY是一个特殊的 make 规则,不会生成clean文件,而执行rm client server。
$< 依赖列表中的文件中的一个一个文件拿出来,同时编译为同名不同后缀
$< 依赖列表中的文件中的一个一个文件拿出来,同时编译为同名不同后缀
$< 依赖列表中的文件中的一个一个文件拿出来,同时编译为同名不同后缀
Makefile的运行:
make——编译执行
make clean——清理工程
make debug——调试
Makefile运行的一些错误:
错误问题1:/usr/lib/gcc/i686-redhat-linux/4.4.7/../../../crt1.o: In function `_start': (.text+0x18): undefined
原因:没有main函数。 解决方案:添加mian函数并编写main
错误问题:2:Makefile:9: *** missing separator. Stop.
原因:没有分隔符或许tab键乱用。 解决方案:检查Tab键,确定Makefile文件以【tab】开始
Makefile文件的其他情况还有待了解与学习......
0 0
- 【linux】浅谈Linux下的gcc编译器和"Makefile"文件
- Linux下C语言编程基础知识--gcc编译器的使用、MakeFile文件的编写
- linux下gcc下makefile文件的编写
- 【Linux】linux下gcc编译器的使用
- linux下GCC编译器
- Linux环境下的编译器 gcc和g++
- linux下编译器gcc和调试器gdb的使用
- linux下gcc/g++编译器使用简介及makefile的书写规则
- Linux下的编译器gcc的介绍
- Linux 环境下 Makefile 文件制作浅谈
- Linux 环境下 Makefile 文件制作浅谈
- Linux环境下Makefile文件制作浅谈
- Linux下GCC和Makefile实例(从GCC的编译到Makefile的引入)
- Linux下GCC和Makefile实例(从GCC的编译到Makefile的引入)
- Linux下GCC和Makefile实例(从GCC的编译到Makefile的引入)
- Linux下MAKEFILE写法和GCC参数
- Linux下MAKEFILE写法和GCC参数
- linux下gcc编译器的使用
- 在CentOS7/CentOS6中支持exfat格式的U盘
- php连接MySQL数据库
- 在线评测系统介绍
- JavaScript作用域链及案例详解
- Design包下NavigationView的使用
- 【linux】浅谈Linux下的gcc编译器和"Makefile"文件
- UVA11945 Financial Management
- Linux安装tomcat7
- 微软面试百题009——按词反转句子
- 绝对定位的图 说明初始包含块是viewport 而不是body/html
- 欢迎使用CSDN-markdown编辑器
- 转:JavaScript函数和对象的关系
- [centos]install python3.5 in centos
- Android中那些让你相见恨晚的类-接口-方法