参考博文:C++静态库与动态库

>> 静态库

  1. 静态库的制作

    a) 编辑 name.cpp 和name.h文件

    b) $g++ -c name.cpp //注意带参数-c,否则直接编译为可执行文件

    c) $ar -crv libname.a name.o  //通过ar工具将目标文件打包成.a静态库文件

  2静态库的使用

    a) 所用程序中包含静态库的头文件

    b)$g++ useStaticLibray -L ./StaticDirectory -l name //只需要在编译的时候,指定静态库的搜索路径(-L选项)、指定静态库名(不需要lib前缀和.a后缀,-l选项)

>> 动态库

  1.动态库的制作

    a) 编辑 name.cpp 和name.h文件

    b) $g++ -fPIC -c name.cpp //-fPIC 创建与地址无关的编译程序(pic,position independent code),是为了能够在多个应用程序间共享

    c) $g++ -shared -o libname.so name.o  //-shared指定生成动态链接库,后缀为.so

      ps:上面两个命令可以合并成一个   $g++ -fPIC -shared -o libname.so name.o

  2动态库的使用

    a) 所用程序中包含动态库的头文件

    b)$sudo cp libname.so /usr/lib  //将编写的动态库复制到/usr/lib目录下(在运行可执行文件时才不会报错,这是和静态库使用不同的地方)

    c)$g++ useDynamicLibray -L ./DynamicDirectory -l name //只需要在编译的时候,指定动态库的搜索路径(-L选项)、指定动态库名(不需要lib前缀和.so后缀,-l选项)

    

    

最新文章

  1. 不行,受不了了,我要记录下这个 bug
  2. iOS-掌握了时间就掌握了一切!
  3. 修改eclipse中settings.xml和默认资源库保存地址
  4. 7.4 gcd
  5. NGINX下配置CACHE-CONTROL
  6. comm的用法
  7. 通讯框架 t-io 学习——websocket 部分源码解析
  8. MySQL 参数- Innodb_File_Per_Table(独立表空间)
  9. Fiddler对Android应用进行抓包
  10. Linux Vi 的使用
  11. js基本知识
  12. mybatis_06SQL片段
  13. php项目,别人无法访问自己(windows 系统)上Apache服务器原因(转载)
  14. 50个常用的sql语句
  15. MT【155】单调有界必有极限
  16. #line 的作用是改变当前行数和文件名称
  17. arcgis server 无法手动删除切片
  18. 01-开始使用django(全、简)
  19. MySQL正则表达式的问题
  20. 【原创】Android自定义适配器的使用方法

热门文章

  1. GTAC 2015将于11月10号和11号召开
  2. AC日记——元素查找 codevs 1230
  3. Google类VR设备知识
  4. nginx缓存配置的操作记录梳理
  5. Laterality issue on fMRI image
  6. BZOJ 1014 【JSOI2008】 火星人prefix
  7. android 混淆文件proguard.cfg详解
  8. Mybatis.Net 整合 ODP.NET Managed
  9. C118+Osmocom-bb+Openbts搭建小型基站
  10. int,long,unsigned的值范围