Linux下GCC编译C语言
Linux下GCC编译C语言
1.创建一个.C文件
# vi/vim name.c
2.编译name.c文件,生成可执行文件
# gcc name.c
3.执行文件,在默认情况下产生的可执行程序名为a.out
# ./a.out
4.通常可以通过gcc的“-o”选项来指定自己的可执行程序名称。
# gcc -o name name.c
生成可执行文件 name 执行:
# ./name
5.使用gcc的“-c”标记来编译支持库代码(对多个文件进行编译)
# gcc -c name.c
输出结果为一个名为 name.o 的文件
例子: # gcc -c name.c
# gcc -c main.c
现在有了两个目标文件:name.o和main.o。它们包含能够被Linux执行的目标代码。
再一次调用GCC来执行连接阶段的工作:
# gcc -o NameMain name.o main.o
执行调用:./NameMain
命令简化:GCC对如何将多个源文件编译为一个可执行程序有内置的规则。
# gcc -o NameMain name.c main.c
# ./NameMain
6. 使用外部函数库
GCC常常与包含标准例程的外部软件库结合使用,几乎每一个Linux应用程序都依赖于由GNU C函数库GLIBC。
编译命令:GCC的"-lm"选项,它告诉GCC查看系统提供的数学库(libm)
# gcc -o name -lm name.c
7.共享函数库与静态函数库,Linux系统上的函数库分为两种不同的类型:共享的和静态的 。
(1)静态函数库:每次当应用程序和静态连接的函数库一起编译时,任何引用的库函数中的代码都会被直接包含进最终的二进制程序。
(2)共享函数库:包含每个库函数的单一全局版本,它在所有应用程序之间共享。这一过程背后所涉及的机制相当复杂;
但主要依靠的是现代计算机的虚拟内存能力,它允许包含库函数的物理内存安全地在多个独立用户程序之间共享。
(3)使用共享函数库不仅减少了文件的容量和Linux应用程序在内存中覆盖的区域,而且它还提高了系统的安全性;
一个被许多不同程序同时调用的共享函数库很可能会驻留在内存中,以在需要使用它时被立即使用,而不是位于磁盘的交换分区中;
这有助于进一步减少一些大型Linux应用程序的装载时间。