在Linux系统开发中,我们频繁的使用动态库(又称共享库),它相较于静态库而言有节省空间、便于更新等优点。但同时,动态库也有其缺点,加载速度相较于静态库而言较慢。那么,为什么调用动态库内的函数要比调用静态库内函数速度慢呢?它的加载过程具体又是怎样的呢?我们可借助gdb调试工具和反汇编工具objdump来找寻原因。
首先准备简单的动态库测试函数:
准备测试程序:
借助gcc工具生成动态库,链接动态库,编译生成可执行文件,并帮助动态链接器指定动态库加载位置。
- gcc -c -fPIC add.c sub.c mul.c
- gcc -shared -o libmymath.so add.o sub.o mu