制作linux动态库
August 31, 2021一、将.c生成.o文件
1
2
gcc -c add.c -o add.o
gcc -c -fPIC add.c -o add.o (生成与位置无关的代码)
二、使用gcc -shared 制作动态库
1
gcc -shared lib库名.so add.o (这里的add.o要使用-fPIC参数生成)
三、编译可执行程序,指定动态库, -l指定库名(去掉lib前缀和.so后缀) -L指定库路径
1
gcc test.c -o a.out -lmymath -L./lib
四、执行./a.out 出错
1
libmymath.so: cannot open shared object file: No such file or directory
原因: 动态 工作于链接阶段, 需要 -l -L 动态链接器 工作于运行时, 工作时需要提供动态库所在的目录位置. 通过环境变量
1
export LD_LIBRARY_PATH=./; ./a.out
这时就运行正常了
上面的环境变量一般写入到 ~/.bashrc来永义生效