[c/c++] linux c生成静态库&共享库
静态库
libdemo.h
1 // libdemo.h 2 #ifndef _LIBDEMO_H 3 #define _LIBDEMO_H 4 5 void demo_call(char *msg); 6 7 #endif
libdemo.c
1 // libdemo.c 2 #include "libdemo.h" 3 #include <stdio.h> 4 5 void demo_call(char *msg) 6 { 7 printf("%s\n",msg); 8 }
编译库文件
# 编辑成目标文件 gcc -c libdemo.c -o libdemo.o # 创建存档文件 ar rcs libdemo.a libdemo.o
测试文件testdemo.c
1 #include "libdemo.h" 2 3 int main() 4 { 5 demo_call("hello"); 6 return 0; 7 }
gcc testdemo.c -o testdemo -static -L. -ldemo
./testdemo
共享库
gcc -fPIC -g -c libdemo.c -o libdemo.o gcc -g -shared -WL,-soname,libdemo.so -o libdemo.so.1.0.0 libdemo.o -lc ln -s libdemo.so.1.0.0 libdemo.so gcc testdemo.c -o -L. -ldemo # 为了能让./testdemo执行需要将.so 加入到库里 export LD_LIBRARY_PATH=$(pwd) ./testdemo
think in coding