静态库
在与文件链接形成可执行文件后
静态库在linux以.a结尾,在windows中以.lib结尾
静态库的制作:
首先需要把file.c编译成file.o:
gcc -c file.c -o file.o
然后把.o文件生成静态库:
1 | ar -rs file.a file.o |
生成静态库之后我们需要把main.c与静态库链接起来生成可执行文件
gcc -I<头文件路径> -L<库的路径> main.c -l<静态库的名字> -o <可执行文件名>
gcc 编译器默认搜索头文件与库文件的路径
/usr/include 为头文件默认路径
/usr/lib 与 /lib 为库的默认路径.
假如你已经把头文件
动态库
与静态库相比显然有着不同的特性
在windows中以.dll文件结尾
当可执行文件调用动态库中的函数时
动态库的制作:
gcc -c file.c -o file.o
然后生成动态库
gcc -shared file.o -o file.so
链接的命令则和静态库的一样
error while loading shared libraries: libadd.so: cannot open shared object file: No such file or directory
这是因为我们没有将动态库加载到内存中
export LD_LIBRARY_PATH=.