[bill@billstone make_lib]$ gcc -O -c pr1.c pr2.c [bill@billstone make_lib]$ ls -l pr*.o -rw-rw-r-- 1 bill bill 804 4 月 15 11:11 pr1.o -rw-rw-r-- 1 bill bill 804 4 月 15 11:11 pr2.o
(3) 链接静态库 为了在编译程序中正确找到库文件,静态库必须按照 lib[name].a 的规则命名,如下例中[name]=pr. ar参数意义: r:在库中插入模块(替换)。当插入的模块名已经在库中存在,则替换同名的模块。 s:写入一个目标文件索引到库中,或者更新一个存在的目标文件索引。 v:该选项用来显示执行操作选项的附加信息。 t:显示库的模块表清单。一般只显示模块名。 [bill@billstone make_lib]$ ar -rsv libpr.a pr1.o pr2.o a - pr1.o a - pr2.o [bill@billstone make_lib]$ ar -t libpr.a pr1.o pr2.o (4) 编译链接选项 -L 及-l 参数放在后面.其中,-L 加载库文件路径,-l 指明库文件名字. [bill@billstone make_lib]$ gcc -o main main.c -L./ -lpr //生成main (5)执行目标程序 [bill@billstone make_lib]$ ./main This is the first lib src! This is the second src lib!
[bill@billstone make_lib]$ cat main.c int main() { print(); return 0; } [bill@billstone make_lib]$ gcc -o main main.c ./xxx.so [bill@billstone make_lib]$ ./main 0x97b5d4:2 this is the first lib src!