Linux C++静态库动态库以及链接方式介绍-CSDN博客
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
在Linux系统中C/C++库分为静态库和动态库两种类型。下面是它们的基础介绍
-
静态库
.a
文件静态库是一种归档文件其中包含了一堆可重用的目标文件这些目标文件通常是C/C++函数的实现。当静态库被链接到程序中时需要的目标文件会被复制并包含在最终的可执行文件中。静态库的优点是程序运行时不需要额外的依赖但是会导致生成的可执行文件变大。 -
动态库
.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_H
int 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
命令用于链接库到可执行程序。STATIC
和SHARED
关键词用于指定创建静态库或动态库。
最后我们在构建目录下运行以下命令来生成和编译项目
cmake ..
make
以上就是在Linux系统中使用CMake创建和链接静态库和动态库的基本方法。
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |