Linux C++静态库动态库以及链接方式介绍

编程入门 行业动态 更新时间:2024-10-10 14:25:15

Linux C++<a href=https://www.elefans.com/category/jswz/34/1771395.html style=静态库动态库以及链接方式介绍"/>

Linux C++静态库动态库以及链接方式介绍

在Linux系统中,C/C++库分为静态库和动态库两种类型。下面是它们的基础介绍:

  1. 静态库.a文件):静态库是一种归档文件,其中包含了一堆可重用的目标文件,这些目标文件通常是C/C++函数的实现。当静态库被链接到程序中时,需要的目标文件会被复制并包含在最终的可执行文件中。静态库的优点是程序运行时不需要额外的依赖,但是会导致生成的可执行文件变大。

  2. 动态库.so文件):动态库在程序运行时才被加载到内存,一个动态库可以被多个正在运行的程序共享,这样可以节省内存。如果动态库被修改,所有使用该库的程序都将受益,无需重新编译或链接。但是,使用动态库需要保证运行环境中有对应的库文件。

以下是使用CMake来创建和链接静态库和动态库的基本示例。

我们首先创建一个名为mylib的库,它有一个源文件mylib.cpp

// mylib.cpp
#include "mylib.h"int add(int a, int b) {return a + b;
}

还有一个头文件mylib.h

// mylib.h
#ifndef MYLIB_H
#define MYLIB_Hint add(int a, int b);#endif

然后,我们创建一个主程序main.cpp来使用这个库。

// main.cpp
#include "mylib.h"
#include <iostream>int main() {std::cout << "2 + 3 = " << add(2, 3) << std::endl;return 0;
}

接下来,我们创建CMakeLists.txt文件来编译和链接这些程序。

  • 静态库

    cmake_minimum_required(VERSION 3.10)
    project(MyApp)add_library(mylib STATIC mylib.cpp)add_executable(main main.cpp)
    target_link_libraries(main mylib)
    
  • 动态库

    cmake_minimum_required(VERSION 3.10)
    project(MyApp)add_library(mylib SHARED mylib.cpp)add_executable(main main.cpp)
    target_link_libraries(main mylib)
    

在以上的CMakeLists.txt文件中,add_library命令用于创建库,add_executable命令用于创建可执行程序,target_link_libraries命令用于链接库到可执行程序。STATICSHARED关键词用于指定创建静态库或动态库。

最后,我们在构建目录下运行以下命令来生成和编译项目:

cmake ..
make

以上就是在Linux系统中使用CMake创建和链接静态库和动态库的基本方法。

更多推荐

Linux C++静态库动态库以及链接方式介绍

本文发布于:2023-11-16 12:01:50,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1620611.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:静态   方式   链接   动态   Linux

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!