Linux下CMake生成和调用动态库

摘要

演示Linux系统下,如何生成动态库,如何调用动态库。


内容

文件目录结构:
在这里插入图片描述
其中,
Generate_lib文件夹:演示如何生成动态库,
Use_lib文件夹:演示如何调用动态库.

生成动态库

./Generate_lib/CMakeLists.txt:

cmake_minimum_required (VERSION 2.6)
project(hello)

#//生成动态库(SHARED)
add_library(hello SHARED ${PROJECT_SOURCE_DIR}/libhello/hello.c)

#//安装文件到目录下
install(TARGETS hello LIBRARY DESTINATION ${PROJECT_SOURCE_DIR}/lib)
install(FILES ${PROJECT_SOURCE_DIR}/libhello/hello.h DESTINATION ${PROJECT_SOURCE_DIR}/include)

./Generate_lib/libhello/hello.c:

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

void hello()
{
      printf("hello world!\n");
}

./Generate_lib/libhello/hello.h:

#ifndef HELLO_H
#define HELLO_H
void hello();
#endif

使用动态库

./Use_lib/CMakeLists.txt:

cmake_minimum_required (VERSION 2.6)
project(usehellolib)

#//头文件目录
include_directories(
        ${PROJECT_SOURCE_DIR}/../Generate_lib/include
)

#//生成可执行文件
add_executable(usehellolib usehellolib.c)

#//链接库到可执行文件
target_link_libraries(usehellolib
        ${PROJECT_SOURCE_DIR}/../Generate_lib/lib/libhello.so
)

./Use_lib/usehellolib.c:

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

编译后的文件目录结构

分别在两个build目录打开终端,运行下面指令:

cmake ..
make
make install 

编译后的文件目录结构如下:
在这里插入图片描述
其中,
动态库安装到了lib目录下,
头文件安装到了include目录下.

完整工程

完整工程在这里下载

相关/参考链接

https://blog.csdn.net/ktigerhero3/article/details/68941252
详细的讲每一条语句作用(未看)
https://www.cnblogs.com/zhoug2020/p/5904206.html

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值