linux/eclipse/c++ 动态库的创立与调用
创建动态链接库
在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
就可以在 GCC C Linker 中的 Libraries 中的 Libraries(-l)中添加pthread ,记住-l它默认已经添加上了。
以上内容转自http://hi.baidu.com/kakakun1/blog/item/22b4b6386e9b193eb9998fe7.html
实际上只通过属性设置导入linux版本的dll即可,最后导入的格式如下图。
图中可以看到eclipse下dll的存在形式像引用的文件一样,VS下面在工程属性里指定路径与名称。这点是二者的区别。