静态库
gcc -fpic -c add.c sub.c 这个命令之后会得到 add.o 于 sub.o (-c 只编译不链接)
ar rcs mymath.a add.o sub.o 将编译好的文件编译成.a静态库用于调用
在使用中 gcc main.c -I../include ../lib/mymarh.a -0 mytest
需要这个函数的声明放在include文件下,以及对应的静态库
调用静态库的时候需要头文件 + 静态库文件 生成可执行文件
动态库
在linux中叫做共享库有三个文件名:real name \soname\linker name
gcc -gcc -fpic -c add.c sub.c 这个命令之后会得到 add.o 于 sub.o (-c 只编译不链接)
gcc -shared -WL, -soname,libmath.so.1 -0 libmath.so.1.0.1 add.o sub.o
其中soname: libmath.so.1
realname:ibmath.so.1.0.1
生成了动态库:想要使用这个动态库需要让linux知道这个动态库的位置
sudo vim /etc/ld/so.conf 打开这个配置文件在其中加入动态库的路径(到这个文件的所在目录即可) sudo ldconfig -v 更新一下共享库的路径。
最后gcc -I.../include main.c ../lib/libmath.so.1 -0 myapp
在修改动态库之后不需要重新编译这个可执行文件(当然需要重新生成一下这个动态库)
gcc -fpic -c add.c sub.c
gcc -shared -WL, -soname,libmath.so.1 -0 libmath.so.1.0.1 add.o sub.o
(动态库调用的时候才链接,因此修改动态库不影响原始文件的调用)