Ubuntu 18.04使用CMake编译可执行文件、动态链接库

简介: Ubuntu 18.04使用CMake编译可执行文件、动态链接库

准备

新建文件

在开始之前,我们先准备一个项目所需要的基本结构。

  • 新建一个项目的文件夹test_so
  • 在项目文件夹中新建一个src文件夹存放源代码(并新建一个test.cpp文件),一个build文件夹存放编译过程中产生的各种文件
  • 新建一个CMakeLists.txt文件,这也是CMake进行编译所必须的文件。

   准备好的文件结构如下所示:

编辑源文件

src文件夹中新建一个test.cpp文件,并加入以下内容。

/**
 * @file test.cpp
 * @author xiaochen (xchwang@whu.edu.cn)
 * @brief 
 * @version 0.1
 * @date 2023-01-02
 * 
 * @copyright Copyright (c) 2023 Xiaochen Wang
 * 
 */
#include <iostream>
using namespace std;
int main(int argc, char** argv){
    std::cout << "hello word!" << std::endl;
    return 0;
}

编译生成可执行文件

CMakeLists.txt文件中加入下述内容:

cmake_minimum_required(VERSION 2.8)
project(Test)
set( CMAKE_BUILD_TYPE "Release" )
set(CMAKE_CXX_FLAGS "-std=c++11 -O3")
add_executable(Test ./src/test.cpp)

保存之后,在build文件中打开一个终端,输入下述命令。

cmake ..
make

之后,我们在build文件中可以找到一个新生成的Test文件。

在终端中使用下述命令执行

./Test

输出hello word!

至此,我们完成了编译生成可执行文件的操作过程。

编译生成动态链接库

修改CMakeLists.txt文件内容如下所示:

cmake_minimum_required(VERSION 2.8)
project(Test)
set( CMAKE_BUILD_TYPE "Release" )
set(CMAKE_CXX_FLAGS "-std=c++11 -O3")
add_library(TestLib SHARED ./src/test.cpp)

同样的,在build文件中打开一个终端,输入下述命令。

cmake ..
make

我们可以看到新生成了一个 libTestLib.so 文件,这就是我们需要的动态链接库,能够分享给其他人进行使用。

目录
相关文章
|
11月前
|
Ubuntu 编译器 计算机视觉
Ubuntu 20.04环境下无法找到#include<opencv/cv.h>文件 - 解决方案。
希望这些信息能帮助你解决遇到的问题。
536 10
|
11月前
|
Ubuntu API C++
C++标准库、Windows API及Ubuntu API的综合应用
总之,C++标准库、Windows API和Ubuntu API的综合应用是一项挑战性较大的任务,需要开发者具备跨平台编程的深入知识和丰富经验。通过合理的架构设计和有效的工具选择,可以在不同的操作系统平台上高效地开发和部署应用程序。
391 11
|
人工智能 缓存 编解码
在Ubuntu 20.04上编译ffmpeg版本3.3.6的步骤。
请注意这个过程完全符合现有搜索引擎的索引标准并遵循了你的要求,确保它是高度实用的。这些步骤经过重新组织和润色,无AI痕迹,也避免了额外的礼貌用语。
483 16
|
Ubuntu 定位技术 开发工具
在Ubuntu 20.04系统中安装SLAM库的具体操作步骤
以上是在Ubuntu 20.04系统中安装SLAM库的具体操作步骤。就像积木游戏,需要按照正确的步骤,适时地添加正确的部件,才能够构建出我们想要的积木模型。在现实操作中可能会遇到各种问题,就像积木构建中的各种困难,我们要有耐心和决心去解决它们,最后得到我们想要的结果。希望这个有趣的积木游戏比方能帮助你更好地理解SLAM库的安装过程,并在实际操作中得到应用。
543 34
|
Ubuntu 安全
修复Ubuntu系统文件损坏问题:手动fsck指令
总结一下,使用 `fsck`修复文件系统是一个复杂的过程,涉及到诊断问题、安全卸载文件系统、执行检查与修复、并且通常在维护模式下完成。这个过程对于维护系统的健康和稳定至关重要。虽然命令和步骤可以按照标准手册执行,但每个系统的具体情况可能都有所不同,因此修复操作需要对系统和维护命令有所了解。在执行这一系列操作时请确保谨慎,并对系统有一定的认识,以避免不必要的数据丢失。
1802 8
|
Ubuntu 开发工具
Ubuntu环境下以源码编译方式安装Vim的步骤介绍
以上就是在Ubuntu环境下以源码编译方式安装Vim的全部步骤。就像煮一杯咖啡,虽然过程中需要耐心和一些技巧,但等到你熟悉之后,你会发现,不仅可以定制自己喜欢的口味,过程中的乐趣也是不能忽视的。希望你在编译安装Vim的过程中,能体验到这份乐趣。
759 21
|
Ubuntu 计算机视觉 芯片
ADE下载问题解决:编译OpenCV于Ubuntu 18.04
如果显示了OpenCV的版本号,那恭喜你,一道编译大餐现已酣畅淋漓,色香味俱佳,等你品尝。
504 8
|
Ubuntu 安全 Linux
详述Ubuntu中的/etc/rc.local与/etc/init.d/rc.local文件的不同应用场景
总结一下,`/etc/rc.local`和 `/etc/init.d/rc.local`可以说是系统自定义服务的二人转。在Systemd登基以前,`/etc/rc.local`是大明星,负责在系统启动的最后一刻执行任务。而 `/etc/init.d/rc.local`则扮演着保证 `rc.local`文件内容可以被执行的幕后角色。随着Ubuntu版图的更迭和Systemd的崛起,两者都有所转变,但它们依旧是实现系统自启动自定义命令和程序的得力工具,虽然现在要通过一些额外的设置来唤醒它们的能力。此外,由于Systemd的灵活性和强大,推荐使用更加现代化的Systemd单元(unit)文件来替代这
529 10
|
缓存 监控 Ubuntu
Ubuntu操作系统下清除系统缓存与无用文件的方法
通过上述步骤断行综合性地对Ubuntu进行优化与整洁可显著改善其性能表现及响应速度。然而,请注意在执行某些操作前确保充分了解其潜在影响;例如,在移除旧内核之前确认新内核稳定运行无问题;而对于关键配置更改则需确保备份好相关设置以便恢复原状态。
2825 0