开发C++的lib问题,使用Eclipse

来源:互联网 发布:spring源码解析 编辑:程序博客网 时间:2024/04/28 12:52
例子:如果我要用ogre的话
1,添加h文件, 也就是 右击项目 -> C/C++ General -> Paths and Sym.... -> include -> GUN C++ 
-> add "D:\Disk\CTools\OgreSDK_mingw_v1-7-2\include" 
2, 刚刚的选项卡不关,切换到 Library Path 选项卡
-> add "D:\Disk\CTools\OgreSDK_mingw_v1-7-2\lib\release"
3, 选项卡不关,切换到 Libraries 选项卡添加 lib项
这里的lib项有规律,假如说我要添加的项目是 libOIS.dll 或者 OIS.dll

那么我只要添加 OIS 就好了.


错误如下:(这些lib我都是一个一个在libraries里面配置过的)
/usr/bin/ld: cannot find -l/home/c04/workspace/monitor6/lib/libxhbase.so
/usr/bin/ld: cannot find -l/home/c04/workspace/monitor6/lib/libxh-data-lib.so

这个问题已经找到解决办法,是因为linux系统加载的时候会自动加上lib和后最.so,而且在libraryes paths中也已经添加路径了,所以应将控制台提示的错误的libraries文件c04/workspace/monitor6/lib/libxhbase.so改为xhbase即可。


在Eclipse中创建新的C++工程,File->New->Project->C++->C++ Project,选择Shared Library。
编译之后将在工程目录下生成一个libshared.so文件,这就是我们要用的动态链接库文件。

导入动态库

Project->Properties->C/C++ Build->Settings->Tool Settings->GCC C++ Linker->Libraries,添加Libraries (-l): shared,添加Library search path (-L): {刚才编译生成的*.so文件路径}。

至此编译可以通过,运行程序还需要指定默认的动态库搜索路径。有两类方法,一类是修改系统的默认搜索路径,类似添加环境变量的方法。另一类是把动态链接库的路径信息编入二进制可执行文件。

第一种:在/etc/ld.so.conf中添加动态库路径,然后运行ldconfig生效。或者export LD_LIBRARY_PATH=路径。这两个方法都只能在eclipse外部生效。后一种只能在同一终端里有用。在eclipse中,可以设置 Run_configurations->Environment添加环境变量LD_LIBRARY_PATH。

第二种:Tool Setting -> GCC C++ Linker -> Miscellaneous -> Other options 添加 -R/路径。这种方法生成程序以后,动态链接库的路径就不能变动了。

当然,还有最为简单实际的一种方法,直接把动态链接库放到系统的默认路径之下:/lib或/usr/lib。

 

Linux Eclipse 中C/C++编译,加入链接库的方法

右键点击project->properties->c/c++ builder->settings里面添加编译器和链接器的参数。
比如你这个-lhello库就可以在linker的libraries添加,也可添加hello库的搜索路径-L

比如:
pthread 库不是 Linux 系统默认的库,连接时需要使用静态库 libpthread.a。
所以在使用pthread_create()创建线程,以及调用 pthread_atfork()函数建立fork处理程序时,需要链接该库。
问题解决如下:
在编译中要加 -lpthread参数
gcc -o pthread pthread.c -lpthread
原创粉丝点击