Linux下GCC编译C语言

时间:2022-10-21 02:21:06

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应用程序的装载时间。