生成动态库文件
gcc -fPIC -shared *c -o libTest.so
-
-fPIC
选项 这是一个编译选项,
PIC
是Position Independent Code
的缩写,表示要生成位置无关的代码,即加载器把其加载到内存任何位置,其代码均可正常运行,所以代码中都是使用的相对地址,这是动态库所需要的一个特性。 -
-shared
选项这是一个链接选项,目的是为了告诉
gcc
生成动态库而不是可执行文件;
使用库文件进行编译
gcc test.c -o test -lTest -L.
动态库的使用
如果直接运行可执行文件./test
,系统会提示无法打开共享文件,是由于共享库没有在系统加载器所指定的路径中
一般加载器都会默认在/lib
、/usr/lib
或者LD_LIBRARY_PATH
环境变量指定的路径中搜索动态库,所以如果把.so
文件复制到前两个目录便可执行,通常为了不破坏系统文件,一般都会使用环境变量定义路径:
export LD_LIBRARY_PATH="."
./test