Chinaunix首页 | 论坛 | 博客
  • 博客访问: 407353
  • 博文数量: 61
  • 博客积分: 1991
  • 博客等级: 上尉
  • 技术积分: 492
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-08 12:28
文章分类

全部博文(61)

文章存档

2011年(5)

2010年(21)

2009年(3)

2008年(4)

2007年(28)

我的朋友

分类: LINUX

2010-12-06 17:23:23

使用Eclipse+CDT工具进行C++库的编写:

  1. 新建库项目: 按新建应用程序一样新建一空项目,再修改设置为库项目:项目Property页--->C/C++ Buildings--->Settings--->Build Artifact--->Artifact Type中选择库类型。
  2. 静态库使用:a) 项目Property页--->C/C++ Buildings--->Settings--->Tool Settings--->GCC C++ Compiler--->Directories: ./../../XLib; b)项目Property页--->C/C++ Buildings--->Settings--->Tool Settings--->GCC C++ Linker--->Libraries:-L:./../../XLib/Debug; -l:XLib
  3. 动态库使用:a) 隐式调用设置同上面的静态库,如动态库不是在/lib,/usr/lib目录下,就需设置库搜索路径LD_LIBRARY_PATH=./../../XLib/Debug(如在~/.bashrc文件中); 或在库目录下执行idconfig PWD, 或在/etc/ld.so.conf文件中加入此路径,然后执行/sbin/idconfig -v; b)显示调用则使用dlopen, dlsym, dlclose函数,注:在项目Property页--->C/C++ Buildings--->Settings--->Tool Settings--->GCC C++ Linker--->All options中加入-ldl。
  4. 应用程序与库混合调试:项目Property页--->C/C++ General--->Paths and Symbols--->References--->选择引用库。
  5. 当搜索的库文件目录下同时存在该库的静态版本和共享版本时,链接器优先使用共享版本.so,此时你可以使用-static链接选项指定链接静态版本.a
  6. 动态库可以导出两个特殊的函数:_init和_fini,前者在动态库被加载后调用,后者在动态库被卸载前调用,我们可以使用这两个函数做些特别的工作。需要注意的是:在定义这两个函数后编译时,需要使用-nostartfiles选项,否则编译器报重复定义错误。
  7. ldd用来查看程序所依赖的共享库,同时也方便我们判断共享库是否被找到; nm命令查看obj文件(.so也是一个obj)中的标识(函数、变量)。

   


阅读(4852) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~