linux编程之一:入门

时间:2022-10-09 04:42:20

1.C语言编译器

   历史上,C语言编译器被称为cc。在起草POSIX标准时,因为已经不可能制订出兼容所有厂商的标准cc命令了,所以POSIX委员会决定为C语言编译器创建新的命令,即为c89。只要使用这个命令,在任何机器上,它的编译选项都是相同的。

 

2.头文件

   对C语言,头文件几乎总是在/usr/include目录及其子目录下面。那些依赖于特定Linux版本的头文件通常可以在目录/usr/include/sys和/usr/include/linux中找到

   调用C编译器时,可以用 -I 标志来包含在子目录或非标准目录中的include文件

 

3.库文件

   标准系统库文件目录:/lib和/usr/lib,编译器默认情况下只搜索标准目录下的库文件。可以编译时给出完整的库文件名让编译器搜索指定目录下的库文件,如:

   cc -o fred fred.c /usr/lib/libm.a

也可以写成如下形式:

   cc -o fred fred.c -lm

 

  库文件名必须是lib开头,随后的部分指明这是什么库,如m表示数学库。后缀 .a 表示这是静态库,后缀 .so 表示这是动态库。

 

  -L 选项指定库文件搜索路径,注意这里是路径,没有文件名。

 

4.静态库

   静态库使用使用ar命令来创建,如:ar cvf libfoo.a bill. fred.o

   在某些系统上,还必须为函数库生成一个内容表,通过使用命令ranlib命令来完成这一步,如:ranlib libfoo.a

 

静态情况下,他把库直接加载到程序里,而在动态链接的时候,他只是保留接口,将动态库与程序代码独立。这样就可以提高代码的可复用度,和降低程序的耦合度。

另外,运行时,要保证主程序能找到动态库,所以动态库一般发布到系统目录中,要么就在跟主程序相对很固定的路径里,这样不管主程序在本机何时何地跑,都能找得到动态库。而静态库只作用于链接时,运行主程序时,静态库文件没存在意义了