1.建立静态函数库
1)在函数库文件目录下$ gcc -c bill.c fred.c //生成bill.o fred.o
2)在函数库文件目录下$ ar crv libfoo.a bill.o fred.o //生成libfoo.a
2.建立包含文件
include文件下(void bill (char *);
void fred (int );)
3.编译源程序
gcc -c program.c -I/文件include.h所在目录 //生成program.o
4.链接程序
gcc -o program program.o /.../libfoo.a //生成可执行文件program
或者:gcc -o program program.o -L/.../ -lfoo.a
(若只有一个包含文件,也可以直接输入包含文件的文件路径 例如:bill.o)
5.执行
./program //注意,一定要保证命令行当前在文件所在目录下
.编译导入包含文件时
a.包含文件如果是用""号标识,则首先在当前文件下查找头文件;
在以上前提上;.也可以在包含文件中直接写入路径:如:1).在源文件中写:"myinclude/xxx.h",则编译时:gcc -c main.c
2).-----------:,则编译时: gcc -c main.c -I/main.c文件所在目录
b.包含文件如果是用<>号标识,则首先在-I引导文件目录下查找头文件,然后再去找系统的头文件。
大概线路(/源文件所在目录/,/usr/lib/gcc/kernel-linux-gnu/4.3.2/include,/usr/i486-linuc-gnu/include,/usr/include/的顺序);
利用共享库:
$ gcc -shared -o libXXX.so object1.o pbject2.o //建立共享库
$ gcc -o program source.c ./libXXX.so //链接共享库
$ ./program //运行
多目标文件的链接:
1. gcc main.c stack.c -o main
也可以分步执行
$ gcc -c main.c //生成main.o文件
$ gcc -c stack.c //生成stack.o文件
$ gcc main.o stack.o -o main //生成可执行文件main
2.读出分段数据
$ readelf -a main
3.读出链接脚本
$ ld --verbose
获得帮助 man gcc
info gcc
阅读(1336) | 评论(0) | 转发(0) |