1,-c 编译目标代码
gcc -o hello.o -c hello.c //-o 只是指定生成目标文件名
或
gcc -c hello.c
都生成hello.o文件,不可以执行。
gcc -o hello hello.o
用目标文件生成hello可执行文件。
gcc -o hello hello.c
用源文件直接生成hello可执行程序。
2, -fpic或-fPIC 产生位置无关的目标代码,可用于构造共享函数库。
# gcc -fPIC -c message.c
“PIC”命令行标记告诉 GCC 产生的代码不要包含对函数和变量具体内存位置的引用,这是因为现在还无法知道
共享函数库。
# gcc -shared -o libmessage.so message.o
将上面的mian.c使用共享库函数ligmessage.so编译:
# gcc -o goodbye -lmessage -L. message.o
3,gcc的常用连接选项有下列几个:
选项的情况下,按命令行上-L选项的前后顺序搜索。dir可使用相对路径。如-L../lib等。
-static 禁止与共享函数库连接。
-shared 尽量与共享函数库连接。
4,编译选项顺序
$ gcc test.o -L. -lhello -o test
注意: $gcc -L. -lhello test.o -o test 会出错!。
原因是: -l是链接器选项,必须要放到被编译文件的后面。 所以上面的命令中-lhello一定要放到 test.o的后面。