Linux下使用cmake生成动态链接库并使用_Ubuntu_青云站长教程网
欢迎来到站长教程网!
  • 秒到短信接口 免费试用
  • 微信支付宝接口 秒结算
  • 中文网站排名|申请加入
  • 搜索引擎全站查询
  • 查询移动网站权重数据
  • 海外主机 台湾公司直销
  • Ubuntu

    当前位置:主页 > 服务器教程 > Ubuntu >

    Linux下使用cmake生成动态链接库并使用

    时间:2019-07-21|栏目:Ubuntu|点击:
  • 使用cmake生成库主要要注意三个文件夹

    (1)源文件文件夹
    (2)中间文件夹(编译生成的.o等文件的文件夹)
    (3)安装文件夹(最终可用的库所在的文件夹)

    使用库的步骤
    (1)在工程文件中包括库函数的头文件(可为绝对路径,也可配置全局环境变量用相对路径)
    (2)在CMakeLists.txt或集成开发环境中指定库函数的动态链接库或者静态链接库所在的文件夹路径
    (3)在CMakeLists.txt或集成开发环境中指定头文件的文件夹路径
    (4)如果是动态链接库,且库函数不在linux默认查找路径下,运行时要修改环境变量才能使用

    下文用最简单的示例来表示这个过程,假设我的库实现的是简单的加法计算。库函数的源文件名字叫hello.c,库函数的头文件名字叫hello.h,生成的动态链接库函数的名称叫libhello.so,目标是在/hello/install文件夹下安装这个库,以便后来调用。设库函数源文件在/home/hello/libhello目录,编译生成的中间文件夹在/home/hello/build

    #1.生成库

    文件夹结构如下

    Linux下生成动态链接库并使用(使用cmake)

    ##1.1编辑文件

    在libhello文件夹下编辑hello.c文件

    #include<stdio.h>
    #include"hello.h"

    void hello()
    {
          printf("hello");
    }

    和hello.h头文件。

    #ifndef HELLO_H
    #define HELLO_H
    #include <stdio.h>
    void hello();
    #endif

    ##1.2使用cmake编译和安装

    (1)在/home/hello/文件夹下新建CMakeLists.txt,添加以下内容

    cmake_minimum_required (VERSION 2.6)

    add_library(hello SHARED ${PROJECT_SOURCE_DIR}/libhello/hello.c)
    install(TARGETS hello LIBRARY DESTINATION lib)

    其中
    add_library(hello SHARED ${PROJECT_SOURCE_DIR}/libhello/hello.c)

    PROJECT_SOURCE_DIR 宏的值是后文中cmake gui的where is source code 选项选择的路径值,也就是顶层CMakeList.txt所在文件路径的值。

    才采用的是hello.c所在的绝对路径。

    (2)打开Cmake图形化工具并配置参数最后生成Makefile
    注意(我的顶层CMakeLists.txt在/home/linuxidc/workspace/hello路径下)

    控制台输入cmake-gui

    如图

    Linux下生成动态链接库并使用(使用cmake)

    a)在where is source code选项选择/home/linuxidc/workspace/hello
    b)在where to build the binaries选项选择/home/linuxidc/workspace/hello/build
    c)在CMAKE_INSTALL_PREFIX选择可执行文件安装的路径/home/linuxidc/workspace/hello/install
    d)选择编译类型CMAKE_BUILD_TYPE 设置为Debug,release
    e )点击configure配置,弹出编译器类型选择界面,选择编译器类型
    f )点击generate就能在where to build the binaries目录下看到Makefile文件了
    在/home/linuxidc/workspace/hello/build文件夹下输入make在当前文件夹下生成libhello.so
    输入make install

    Linux下生成动态链接库并使用(使用cmake)

    在/home/linuxidc/workspace/hello/install即CMAKE_INSTALL_PREFIX路径的看到文件
    libhello.so
    库的编译和安装已经实现了,为了方便使用,还需要将头文件安装到安装目录下。

    ##1.3将头文件安装到<prefix>/include/目录下

    在顶层文件夹下的CMakeLists.txt加入以下语句安装头文件到
    /home/linuxidc/workspace/hello/install/include文件夹
    INSTALL(FILES ${PROJECT_SOURCE_DIR}/libhello/hello.h
    DESTINATION include)

    Linux下生成动态链接库并使用(使用cmake)

    然后在cmake gui中点击configure配置,点击generate
    然后在build文件夹make
    make install

    如图

    Linux下生成动态链接库并使用(使用cmake)

    #2.使用生成的动态链接库

    ##2.1 方法1.直接用gcc指定头文件路径和动态链接库路径

    步骤如下

    ###2.1.1在目录/home/linuxidc/workspace/下新建工程usehellolib

    如图

    ###2.1.2编译主函数usehellolib.c 如下

    #include <hello.h>
    int main()
    {
    hello();
    return 0;
    }

    ###2.1.3使用gcc命令链接并执行生成的可执行文件
    在/home/linuxidc/workspace/usehellolib 目录下输入命令
    linuxidc@linuxidc:~/workspace/usehellolib$ gcc usehellolib.c -I/home/linuxidc/workspace/hello/install/include -L/home/linuxidc/workspace/hello/install/lib -lhello -o usehellolib

    Linux下生成动态链接库并使用(使用cmake)

    上一篇:多目录工程的CmakeLists.txt编写(自动添加多目录下的文件)

    栏    目:Ubuntu

    下一篇:C语言将真分数分解为埃及分数代码解析

    本文标题:Linux下使用cmake生成动态链接库并使用

    本文地址:http://www.jh-floor.com/fuwuqijiaocheng/Ubuntu/8264.html

    广告投放 | 联系我们 | 版权申明

    重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

    如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

    联系QQ:888888 | 邮箱:888888#qq.com(#换成@)

    Copyright © 2002-2017 青云站长教程网 版权所有 琼ICP备xxxxxxxx号