总结编译和链接过程:
预编译:gcc -E main.c -o main.i
编译:gcc -S main.c -o main.s
汇编:gcc -c main.s -o main.o
链接:gcc main.o -o main(gcc -o main main.o)
gcc 使用一个和多个文件编译:
一个文件:
多个文件:
参考《程序设计第四版》第1、2节:
什么是库?
库是一组预先编译好的函数的集合,这些函数都是按照可重用的原则编写的。库文件的名字总是以lib开头,然后的部分指明这是什么库(c代表语言库,m代表数学库),文件名的最后以.开始,随后给出库文件的类型。
什么是静态库?
静态库,也称归档文件,按惯例它们的文件名都以.a结尾。比如标准C语言函数库/usr/lib/libc.a和X11函数库/usr/lib/libX11.a。
什么是共享库?
共享库的保存位置与静态库是一样的,但共享库有不同的文件名后缀。在一个典型的linux系统中,标准数学库的共享版本是/usr/lib/libbm.so。
Linux存放头文件在那个地方?
对于C语言来说,头文件几乎总是位于/usr/include目录及其子目录中。那些依赖于特定linux版本的头文件通常可以在目录/usr/include/sys和/usr/include/linux中找到。
库文件在什么地方?
标准系统库文件一般存储在/lib和/usr/lib目录中。
可执行程序(命令)在什么地方存放?
/bin:二进制文件目录,用于启动系统时用到的程序。
/usr/bin:用户二进制文件目录,用于存放用户使用过的标准程序。
/usr/local/bin:本地二进制文件目录:用于存放软件安装的程序。
系统管理员(例如root用户)登录后使用的PATH变量可能还包含存放系统管理程序的目录,如/sbin和/usr/sbin。