目录
-
动态共享库和静态共享库的差别:
- C++ 静态库与动态库(吴秦(Tyler)):https://www.cnblogs.com/skynet/p/3372855.html
- 动态共享库是编译链接的时候会调用链接,而且在代码运行阶段也会调用,
- 静态共享库是链接的时候就直接把静态库文件放进代码里面进行编译。
-
linux下的动态共享库:
-
动态共享库在linux下的形式:lib版本号.so,版本号到时候调用的时候需要用到
- 创建动态共享库的步骤:
- 将.c或者.cpp文件转成动态共享库。
g++ -c test.cpp -o test.o
- 将.o文件编程动态共享库的形式:lib必须要写,后面接上版本号,后缀为.so。
g++ -shared -fpic test.o -o libTest.so
- 将要链接动态库的文件进行链接编译:
g++ main.cpp -o main -lTest -L ./
- 移动文件进入lib文件里面:
mv libTest.so/usr/lib/
- 重新刷新动态库文件:
ldconfig
- 将.c或者.cpp文件转成动态共享库。
-
注意事项:
- 动态链接库链接的注意事项:
- -l表示链接动态库、Test是要链接的库的版本号、-L是添加路径。
- 当将动态共享库放进/ussr/bin文件下的时候是不需要添加路径的(-L +路径),只需要ldconfig重新刷新动态共享库,注意root权限
- 不将自己创建的动态库放进lib里面的话,虽然可以添加路径进行编译,但是无法运行,因此需要动态库还是要放进lib里面的。
- 动态链接库要写在-o前面,因为-o表示链接成可执行程序,因此动态库要在之前链接
-
编程文件一般的存储位置:
- /usr/lib文件是放动态链接库的
- /usr/include/文件是放.h,头文件的
- /usr/lib文件是放动态链接库的
-
本人并不是专业的,只是初学者。正在尝试利用自己的理解和实践来更好的记忆学习,写这个博客的目的是将自己学习linux编程的过程记录下来,并且为其他初学者提供思路。如果写的有错请指出,一定会仔细修改,不胜感激。如果文章中引用的例子侵权或者不够规范,可以联系本人进行修改或者删除。希望我的博客可以帮助更多的人初学入门,之后会继续更新的。