摘要
演示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