Linux下gcc编译C程序指令小结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Kair_Wu/article/details/48184427

GCC是linux环境下,编译C程序的常用工具。

下面整理和总结一下常用的编译和执行指令。给需要帮助的初学Linux下C编程的同学看一下,希望会有帮助。

1.单个源程序。

假设源程序名为:hello.c

编译的指令为:gcc -o hello hello.c

执行指令为:./hello

2.多个源程序

假设源程序分别为:hello.c 和main.c(可以更多,方法类似)

编译指令为:

gcc -c hello.c,这个指令会在源文件目录下生成目标文件hello.o

gcc -c main.c,这条指令会生成main.o

然后,将两个目标文件连接一起,生成可执行文件test

使用如下命令:gcc -o test hello.o main.o。

执行命令相同。

3.使用外部函数库

假设源程序为:math.c,该函数调用了Linux环境下的数学库

编译指令为:

gcc -o math lm math.c

GCC的"-lm"选项,它告诉GCC查看系统提供的数学库(libm)。因为Linux和UNIX的系统函数库通常以"lib"为前缀,所以我们假设它存在。真正的函数库 置随系统的不同而不同,但它一般会位于目录/lib或/usr/lib中,在这些目录中还有数以百计的其他必需的系统函数库。

4.共享函数库和静态函数库

Linux系统上的函数库分为两种类型:共享的和静态的 。静态函数库:每次当应用程序和静态连接的函数库一起编译时,任何引用的库函数中的代码都会被直接包含进最终的二进制程序。 共享函数库:包含每个库函数的单一全局版本,它在所有应用程序之间共享。这一过程背后所涉及的机制相当复杂,但主要依靠的是现代计算机的虚拟内存能力,它允许包含库函数的物理内存安全地在多个独立用户程序之间共享。 

使用共享函数库不仅减少了文件的容量和Linux应用程序在内存中覆盖的区域,而且它还提高了系统的安全性。一个被许多不同程序同时调用的共享函数库很可能会驻留在内存中,以在需要使用它时被立即使用,而不是位于磁盘的交换分区中。这有助于进一步减少一些大型Linux应用程序的装载时间。

这种情况的编译和运行指令在学习之中。 



猜你喜欢

转载自blog.csdn.net/Kair_Wu/article/details/48184427
今日推荐