Linux库文件.a .so

1.

.o 就相当于windows里的obj文件 ,一个.c或.cpp文件对应一个.o文件
.a 是好多个.o合在一起,用于静态连接 ,即STATIC mode,多个.a可以链接生成一个exe的可执行文件
.so 是shared object,用于动态连接的,和windows的dll差不多,使用时才载入。


得到了ts:error while loading shared libraries: libs.so: cannot open shared object file: No such file or directory 系统不能找到我们自己定义的libs.so,那么告诉他,修改变量LD_LIBRARY_PATH。

 

2. 怎么生成so动态库文件?

编译:得到输出文件libs.o
gcc -fPIC -g -c s.c -o libs.o
 
链接:得到输出文件libs.so
gcc -g -shared -Wl,-soname,libs.so -o libs.so libs.o -lc

得到了ts:error while loading shared libraries: libs.so: cannot open shared object file: No such file or directory 系统不能找到我们自己定义的libs.so,那么告诉他,修改变量LD_LIBRARY_PATH。

 

3. 怎么生成a静态库文件?

编译:得到输出文件libs.o
gcc -fPIC -g -c s.c -o libs.o
ar r .a .o

 

4.

看.a结构,找其中的原文件,用ar -t YourFile.a

看动态库用 nm -d lib*.so

posted @ 2012-08-22 14:56  Further  阅读(2280)  评论(0编辑  收藏  举报