zoukankan      html  css  js  c++  java
  • linux/eclipse/c++ 动态库的创立与调用

    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下面在工程属性里指定路径与名称。这点是二者的区别。

  • 相关阅读:
    Maven仓库详解
    Maven镜像配置
    使用spring的jdbcTemplate-----用JDBC模板查询数据库
    struts2+spring的两种整合方式
    Spring 中设置依赖注入
    Struts_json插件配置参数
    String、StringBuffer与StringBuilder之间区别
    有关collection中的一些数据结构
    MyBatis的foreach语句详解
    struts文件上传拦截器中参数的配置(maximumSize,allowedTypes ,allowedExtensions)问题
  • 原文地址:https://www.cnblogs.com/flysnail/p/2550835.html
Copyright © 2011-2022 走看看