zoukankan      html  css  js  c++  java
  • Linux下使用Eclipse C/C++生成创建并调用动态库(.so)

    一、平台版本

    Linux版本:Lubuntu14.04

    eclipse版本:Oxygen 4.7

    二、创建动态库

    1、创建工程:File->New->C/C++ Project,选择C Managed Build

    2、输入项目名,Project type选Shared Library->Empty Project,工具链选用Linux GCC

     3、新建源文件,New->Soure File,编写动态库代码(这里是简单测试因此没有创建头文件,可以另建目录放置源文件和头文件方便管理)

     

    /*
     * test.c
     *
     *  Created on: 2019年1月15日
     *      Author: 
     */
    #include <stdio.h>
    
    void test()
    {
        printf("hello
    ");
    }

    4、勾选-fPIC,右键项目工程->Properties->C/C++ Build->Settings,Tool Settings->GCC C Comoiler->Miscellaneous,勾选Position independent Code(-fPIC)

    作用(参考http://blog.sina.com.cn/s/blog_54f82cc201011op1.html):

     -fPIC 作用于编译阶段,告诉编译器产生与位置无关代码(Position-Independent Code),则产生的代码中,没有绝对地址,全部使用相对地址,故而代码可以被加载器加载到内存的任意位置,都可以正确的执行。这正是共享库所要求的,共享库被加载时,在内存的位置不是固定的。 

     5、编译工程,在构建项目工程路径下的./Debug中可以看见生成的.so文件

    三、使用动态库

    1、创建新工程,并设置要使用的库的名称和路径

    2、添加代码,编译运行

    #include <stdio.h>
    #include <stdlib.h>
    
    int main(void) {
        test();  //动态库中的函数
        return EXIT_SUCCESS;
    }

    运行时候出现以下错误:

    /home/oyqj/eclipse-workspace2/useTest/Debug/useTest: error while loading shared libraries: libtest.so: cannot open shared object file: No such file or directory

    原因:

    系统没有找到对应的库文件

    解决方法(参考https://blog.csdn.net/shine_journey/article/details/78356063):

    1、打共享库放到/usr/local/lib目录下(很多开源共享库都会安装到该目录)

    2、修改共享库配置文件/etc/ld.so.conf,修改成以下内容

    include /etc/ld.so.conf.d/*.conf
    /usr/local/lib

     3、执行命令,告知系统共享动态库

    ldconfig

    再次运行程序,成功使用动态库

  • 相关阅读:
    unexpected inconsistency;run fsck manually esxi断电后虚拟机启动故障
    centos 安装mysql 5.7
    centos 7 卸载mysql
    centos7 在线安装mysql5.6,客户端远程连接mysql
    ubuntu 14.04配置ip和dns
    centos7 上搭建mqtt服务
    windows eclipse IDE打开当前类所在文件路径
    git 在非空文件夹clone新项目
    eclipse中java build path下 allow output folders for source folders 无法勾选,该如何解决 eclipse中java build path下 allow output folders for source folders 无法勾选,
    Eclipse Kepler中配置JadClipse
  • 原文地址:https://www.cnblogs.com/qjswxd/p/10272453.html
Copyright © 2011-2022 走看看