编译静态库过程: 源文件包括: liberr.h, liberr.c 编译为静态库: gcc -c liberr.c -o liberr.o ar rcs liberr.a liberr.o 如此, 就在当前目录下构建好静态库文件liberr.a;
扩展: . ar -t liberr.a 列出库文件中所有的目标文件(.o); . nm, 列出目标文件(.o)的符号清单; nm -s liberr.a . objdump, 查看目标文件的信息, 就是(ar和nm的复合);
测试该静态库: 测试文件: errtest.c 编译连接: gcc errtest.c -static -L. -lerr -o test 其中, -lerr, 指定静态库名为liberr; -L. , 指定静态库的搜索路径为当前目录; 报错: /usr/bin/ld: cannot find -lc 也就是说, 连接器找不到libc.a; 上网查找, 说是因为未安装该库; so, yum install glibc-static 再编译, OK.
|