日期:2014-05-16 浏览次数:20815 次
前面提到过对于机器来说只能识别0,1,我们如果让机器运行必须输入机器能够识别的语言,可是机器语言不利于人们使用可理解,因此科学家就开发出人类能看的懂的程序语言,然后再创造出“编译器”将程序语言转换为机器语言。
C语言就是我们能够看懂的机器语言,gcc就是Linux下编译器。我们通常C语言写的程序通过gcc编译后,就能成为机器能够识别的语言
如果LINUX 系统中为安装GCC编译器,可以使用下面命令安装
[root@bogon ~]# yum install gcc
语法:
gcc –c file.c
仅将源代码编译成目标文件。并不会进行链接以及生成可执行文件
gcc –o 执行文件名 源代码文件
直接生成指定名称的执行文件。但不会生成目标文件
gcc –o 执行文件名 目标文件
通过目标文件生成可执行文件
gcc [其他编译操作] –L库文件路径
查找库文件的路径默认是/usr/lib 与/ib
gcc [其他编译操作] –I包含文件路径
查找包含文件的路径默认是/usr/include
gcc [其他编译操作] –Wall
更加严谨的编译方式,会输出很多警告信息
gcc -O [其他编译操作]
编译时依据操作环境优化执行速度
gcc [其他编译操作] –l库文件名称
编译时引入其他的库文件,其中库文件lib与扩展名不需要写。如引入libm.so文件,可写成-lm
1. 编写C语言程序l
[root@bogon code]# vim hello.c #include <stdio.h> int main(void) { printf("hello world!"); }
2. 编译
[root@bogon code]# gcc hello.c [root@bogon code]# ll hello.c a.out -rwxr-xr-x 1 root root 4947 04-05 16:07 a.out -rw-r--r-- 1 root root 66 04-05 16:07 hello.c
说明:默认gcc编译器编译出来的执行文件a.out, 可以使用-o来制定编译后生产的执行文件名称
[root@bogon code]# gcc -o hello hello.c [root@bogon code]# ll hello -rwxr-xr-x 1 root root 4947 04-05 16:11 hello
3. 执行
[root@bogon code]# ./a.out hello world! [root@bogon code]# ./hello hello world!
假设我们有A.c ,B.c两个程序文件,并且他们之间存在函数调用,那么当其中有一个文件更改了。是不是需要将这两个文件都重新编译?当然不需要,这就需要引入目标文件
目标文件:编译器编译源代码后生成的文件,目标文件从结构上讲,它是已经编译后的可执行文件格式,只是没有经过链接的过程。
接着上面的说,当B.c文件更改时,我们执行重新编译B文件生产目标文件。再讲整体链接即可
1. 编写C语言程序
File:A.c #include <stdio.h> #include “B.c” int main () { printf("这是第一个文件\n"); method(); } File:B.c #include <stdio.h> void method(void) { printf("这是第二个文件!\n";) }
2. 编译
root@bogon code]# gcc -c A.c B.c -I./ [root@bogon code]# ll -rw-r--r-- 1 root root 81 04-05 16:35 A.c -rw-r--r-- 1 root root 912 04-05 16:35 A.o -rw-r--r-- 1 r