在linux下利用GCC编译带有自定义头文件和动态库的程序:
假设源文件为src1.c src2.c 动态库位libswsds.so 欲生成的目标文件名为objectFile
头文件已经在源文件中包含,只需将头文件放在/usr/include目录下。将libswsds.so放在/lib
或是/usr/lib目录下
gcc src1.c src2.c -o objectFile -L -lswsds
生成动态库.so文件的命令
假设引用的源文件为src1.c 和 src2.c,欲生成的动态库名为libtest.so
gcc src1.c src2.c -fPIC -shared -o libtest.so
-shared 该选项指定生成动态连接库,不用该标志外部程序无法连接。相当于一个可执行文件
-fPIC 表示编译为位置独立的代码,不用此选项的话编译后的代码是位置相关的所以动态载入时是通过代码拷贝的方式
来满足不同进程的需要,而不能达到真正代码段共享的目的。
-L. 表示要连接的库在当前目录中
-ltest 编译器查找动态连接库时有隐含的命名规则,即在给出的名字前面加上lib,后面加上.so来确定库的名称
LD_LIBRARY_PATH:这个环境变量指示动态连接器可以装载动态库的路径。