程序库(Library),也称为软件库(Software Library),是一组预编写的代码和资源的集合,旨在帮助开发人员完成特定任务或解决特定问题。这些代码和资源可以包括函数、类、变量、常量、数据结构、文档等,它们被封装在一个独立的单元中,以便在多个项目中重复使用。库的存在可以使得程序模块化,可以加快程序的再编译,可以实现代码重用,可以使得程序便于升级。
程序库可分静态库(static library)和共享库(shared library)也即动态库
动态库是在运行时被加载到内存并链接到应用程序中的库。它的代码不会被复制到应用程序文件中,而是保存在独立的库文件中,应用程序在需要时动态地加载和链接这些库。这样的设计可以节省存储空间,并且允许库的更新在不重新编译应用程序的情况下进行。不过,应用程序需要确保在运行环境中存在所需的动态库文件。
动态库的制作:
- 生成目标文件,此时要加编译选项:-fPIC(fpic),可以使用gcc或者g++
gcc/g++ *.c/*.cpp -c -fpic
-fPIC 创建与地址无关的编译程序(pic,position independent code),是为了能够在多个应用程序间共享。
- 生成共享库,此时要加链接器选项: -shared(指定生成动态链接库)
gcc/g++ -shared *.o -o libxxx.so
例如:
要将上面所有cpp文件制作动态库
1.生成目标文件
生成.o文件
2. 生成动态库
制作完成