mthoutai

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

一.简介

使用外部动态库或者静态库,生成可执行文件。

二.外部库

1.外部库头文件

testlib.h存放目录:/usr/local/testLIB

#ifndef TEST_LIB_H
#define TEST_LIB_H
#include<stdio.h>
  void printFunc();
  #endif

2.外部库源文件

testlib.c

#include "testlib.h"
void printFunc()
{
printf("this is printFunc test\n");
}

3.外部库文件

生成库文件的方法,请参考本专栏文章《CMakeLists.txt语法(三)》。

动态库文件testlib.so和静态库文件testlib.a存放目录:/usr/local/testLIB/lib

三.构建工程

1.工程目录下的CMakeLists.txt

PROJECT(uselib)
ADD_SUBDIRECTORY(src bin)

2.子目录下的文件

(1)CMakeLists.txt

  • 调用动态库
INCLUDE_DIRECTORIES(/usr/local/testLIB)
LINK_DIRECTORIES(/usr/local/testLIB/lib)
ADD_EXECUTABLE(uselib main.c)
TARGET_LINK_LIBRARIES(uselib libtest.so)
  • 调用静态库
INCLUDE_DIRECTORIES(/usr/local/testLIB)
LINK_DIRECTORIES(/usr/local/testLIB/lib)
ADD_EXECUTABLE(uselib main.c)
TARGET_LINK_LIBRARIES(uselib libtest.a)

(2)main.c

#include "testlib.h"
void main()
{
printFunc();
printf("this is use library demo\n");
}

3.外部编译

进入build目录后,执行

cmake ..
make

4.运行编译后的可执行文件

在这里插入图片描述

5.查看可执行文件依赖的动态库

ldd ./uselib

在这里插入图片描述

四.语法

1.INCLUDE_DIRECTORIES

  • 语法:INCLUDE_DIRECTORIES( dir1 dir2 …)
  • 功能:向工程添加多个头文件搜索路径,路径之间用空格分开

2.LINK_DIRECTORIES

  • 语法:LINK_DIRECTORIES(directory1 directory2 …)
  • 功能:添加非标准的共享库搜索路径

3.TARGET_LINK_LIBRARIES

  • 语法:TARGET_LINK_LIBRARIES(target library1 library2…)
  • 功能:为target添加需要链接的共享库
posted on 2025-10-28 08:21  mthoutai  阅读(5)  评论(0)    收藏  举报