易截截图软件、单文件、免安装、纯绿色、仅160KB

Linux下GCC编程四个过程(1)


在Linux下进行C语言
编程,必然要采用GNU GCC来编译C源代码生成可执行程序。
一、GCC快速
入门
Gcc指令的一般格式为:Gcc [选项] 要编译的文件 [选项] [目标文件]
其中,目标文件可缺省,Gcc默认生成可执行的文件名为:编译文件.out
我们来看一下经典
入门程序"Hello World!"
# vi hello.c
#include <stdlib.h>
#include <stdio.h>
void main(void)
{
printf("hello world!\r\n");
}
用gcc编译成执行程序。
#gcc hello.c
该命令将hello.c直接生成最终二进制可执行程序a.out
这条命令隐含执行了(1)预处理、(2)汇编、(3)编译并(4)链接形成最终的二进制可执行程序。这里未指定输出文件,默认输出为a.out。
如何要指定最终二进制可执行程序名,那么用-o选项来指定名称。比如需要生成执行程序hello.exe
那么
#gcc hello.c -o hello.exe
二、GCC的命令剖析--四步走
从上面我们知道GCC编译源代码生成最终可执行的二进制程序,GCC后台隐含执行了四个阶段步骤。
GCC编译C源码有四个步骤:
预处理-----> 编译 ----> 汇编 ----> 链接
现在我们就用GCC的命令选项来逐个剖析GCC过程。
1)预处理(Pre-processing)
在该阶段,编译器将C源代码中的包含的头文件如stdio.h编译进来,用户可以使用gcc的选项”-E”进行查看。
用法:#gcc -E hello.c -o hello.i
作用:将hello.c预处理输出hello.i文件。
[root]# gcc -E hello.c -o hello.i
[root]# ls
hello.c  hello.i
[root]# vi hello.i
# 1 "hello.c"
# 1 "<built-in>"
# 1 "<command line>"
# 1 "hello.c"
# 1 "/usr/include/stdlib.h" 1 3
# 25 "/usr/include/stdlib.h" 3
# 1 "/usr/include/features.h" 1 3
# 291 "/usr/include/features.h" 3
# 1 "/usr/include/sys/cdefs.h" 1 3
# 292 "/usr/include/features.h" 2 3
# 314 "/usr/include/features.h" 3
# 1 "/usr/include/gnu/stubs.h" 1 3
# 315 "/usr/include/features.h" 2 3
# 26 "/usr/include/stdlib.h" 2 3
# 3 "hello.c" 2
void main(void)
{
printf("hello world!\r\n");
}


相关文档:

linux 源码学习计划

准备条件:必要的内核;必要的文档;必要的机器(虚拟机也可)。
第一周:
     1.linux和unix相比有哪些特点?
     2.内核编程和用户空间编程相比有哪些不同之处?
     3.自己编译一下内核,你编译成功了么?如果不成功,有什么问题?使用你新编译的 ......

Linux/Ubuntu chmod命令详解使用格式和方法

在 Ubuntu Linux 中用源码文件安装软件
时经常都会用到chmod
命令来更改文件的权限使其在安装时有执行的权限。由于 Ubuntu Linux 默认不能用root账户来登录所以在用chmod命令来更改文件的权限时往往需要结合sudo命令来使用,如果你对sudo命令还不太了解,请先看看本站的《sudo命令详解》
chmod
Linux/Ubuntu
系统中文 ......

Linux下rz/sz安装及使用方法

1)    工具说明
在SecureCRT这样的ssh登录软件里, 通过在Linux界面里输入rz/sz命令来上传/下载文件. 对于RHEL5, rz/sz默认没有安装所以需要手工安装.
sz: 将选定的文件发送(send)到本地机器;
rz:运行该命令会弹出一个文件选择窗口, 从本地选择文件上传到服务器(receive).
下载安装包lrzsz-0.12.20.tar. ......

linux 下编辑 vi /etc/bash.bashrc

通过编辑linux的/etc/bash.bashrc文件来快速定位各个目录
alias mysqlw="mysql -uroot -p123456"
alias usr="cd /usr/local"
alias src="cd /usr/src"
alias sphinx="cd /usr/local/sphinx"
alias apahce="cd /usr/local/apache"
alias home="cd /home/data/dev_test_com"
alias php="/usr/local/php5/bin/php" ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号