1.应用程序
通常在/usr/bin 及/opt目录下
系统管理员一般会用/opt /usr/local目录 来分类厂商提供及后续添加的文件与系统本身提供的应用程序
2.头文件
一般放在 /usr/include目录下
调用C语言编译器编译时,可以使用-I标志来包含在子目录或非标准位置的头文件,如
$ gcc -o hello -L/usr/myinclude hello.c 他指定编译器不仅的标准头文件目录也在 /usr/myinclude下查找helo.c中所包含的头文件
3.库文件
库时一组预先编译好的函数的集合,这些函数都是按照可重用的标准写的.标准库文件一般在/lib /usr/lib下
C语言编译器默认情况下只会搜索标准C语言库
库文件的命名要遵循命名规范并且需要在命令行中明确指定,库文件命名: lib+库名+.+库类型(a/so)
.a 传统的静态函数库
.so代表共享函数库
$ gcc -o hello hello.c /usr/lib/libm.a
$ gcc -o hello hello.c -lm -lm标准另一个好处如果有共享库编译器会自动选择共享库
$ gcc -o hello -L/usr/mylib hello.c -lmylib 用/usr/mylib目录下的libmylib库来编译和链接hello.c文件
函数库时一组准备好使用的状态的目标文件,当程序需要使用函数库的某个函数时,他包含一个声明该函数的文件头,编译器和链接器负责将程序代码和函数结合在一起组成一个单独的可执行文件,必须用-l指明标准库外还需要什么库.
静态库:
也称作归档文件,惯例是以.a结尾,
动态库:
有个缺点,当你同时运行多个应用程序并且他们都使用同一个函数库的函数时,内存中会存在同一函数的多个副本.并且程序本省也有多个同样的副本,比较耗资源和磁盘空间.
$ ldd program 查看可执行文件所依赖的so库