1 指定头文件位置 (gcc -I)
$gcc -I/usr/programe/include test.c
test.c将在/usr/programe/include中寻找需要的头文件
2 指定生成的可执行文件名称 (gcc -o)
$gcc -o test test.c
默认情况下,gcc将生成的执行文件命名为a.out, 上例中生成的执行文件名为test
3 指定连接库
指定连接库的方式有三种:
3.1 全路径全名称指定
$ gcc -o test test.c /usr/lib/libm.a
3.2 简称指定(-l)
$ gcc -o test test.c -lm
这种方式,程序会优先连接标准库目录(一般为/usr/lib)下的libm.so,如果没有会去找libm.a。库文件名称简化的方式是相同的,如libprograme.a的简称为 -lprograme
3.3 指定连接库的搜索路径(-L)
$ gcc -o test test.c -L/usr/programe/lib -lm
这种方式,gcc会优先寻找/usr/programe/lib下的libm.so或libm.a,其他含义与3.2的含义相同
4 仅生成中间文件(gcc -c)
$ gcc -c test.c
这种方式将生成test.o文件,这种中间文件便于我们利用ar命令建立静态连接库
5 打包静态库
$ ar crv libname.a file1.o file2.o
其中crv是ar命令的参数,c表示create,其他请参考其他资料,crv后面必须是要打包的库文件名,然后跟着需要打包的.o文件。
6 查看程序的依赖库
$ ldd programe
系统会依次打印programe程序所依赖的库
7 创建动态库
$ gcc hello.c -fPIC -shared -o libhello.so