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 文件,这就是我们需要的动态链接库,能够分享给其他人进行使用。

目录
相关文章
|
7天前
|
Ubuntu 开发工具 git
Ubuntu编译ffmpeg解决错误:ERROR: avisynth/avisynth_c.h not found
通过本文的详细指导,您可以顺利地在Ubuntu系统上配置和编译FFmpeg,并解决Avisynth头文件缺失的问题。
63 27
|
27天前
|
Ubuntu 计算机视觉 C++
Ubuntu系统下编译OpenCV4.8源码
通过上述步骤,你可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使你能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
78 43
|
25天前
|
Ubuntu 计算机视觉 C++
Ubuntu系统下编译OpenCV4.8源码
通过上述步骤,你可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使你能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
68 30
|
28天前
|
Ubuntu 计算机视觉 C++
Ubuntu系统下编译OpenCV4.8源码
通过上述步骤,你可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使你能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
36 12
|
2月前
|
JSON Ubuntu 开发者
ubuntu 22安装lua环境&&编译lua cjson模块
通过上述步骤,可以在 Ubuntu 22.04 系统上成功安装 Lua 环境,并使用 LuaRocks 或手动编译的方式安装 lua-cjson 模块。本文详细介绍了每一步的命令和操作,确保每一步都能顺利完成,适合需要在 Ubuntu 系统上配置 Lua 开发环境的开发者参考和使用。
162 13
|
4月前
|
Ubuntu 应用服务中间件 nginx
Ubuntu安装笔记(三):ffmpeg(3.2.16)源码编译opencv(3.4.0)
本文是关于Ubuntu系统中使用ffmpeg 3.2.16源码编译OpenCV 3.4.0的安装笔记,包括安装ffmpeg、编译OpenCV、卸载OpenCV以及常见报错处理。
290 2
Ubuntu安装笔记(三):ffmpeg(3.2.16)源码编译opencv(3.4.0)
|
4月前
|
Ubuntu 编译器 计算机视觉
Ubuntu系统编译OpenCV4.8源码
【10月更文挑战第17天】只要三步即可搞定,第一步是下载指定版本的源码包;第二步是安装OpenCV4.8编译需要的编译器与第三方库支持;第三步就是编译OpenCV源码包生成安装文件并安装。
|
4月前
|
Ubuntu Shell API
Ubuntu 64系统编译android arm64-v8a 的openssl静态库libssl.a和libcrypto.a
Ubuntu 64系统编译android arm64-v8a 的openssl静态库libssl.a和libcrypto.a
|
5月前
|
Ubuntu 编译器 C语言
Ubuntu 源码编译指定版本 make:神秘代码背后的激情冒险,等你来战!
【9月更文挑战第8天】在Ubuntu中,编译指定版本的源码`make`是一项挑战但也极具价值的任务。它允许我们根据特定需求定制软件,提升性能与功能适配。首先需安装必要工具包如GCC等;接着下载所需源码并阅读相关文档以了解编译要求。通过运行`./configure`、`make`及`sudo make install`命令完成编译安装流程。过程中可能遇到依赖项缺失或编译选项设置不当等问题,需根据错误提示逐一解决。对于大型项目,可利用多核编译加快速度。掌握这一技能有助于更好地探索开源世界。
71 3
|
Ubuntu
Ubuntu编译链接错误:cannot find -lz解决办法
这是因为没有安装zlib库,使用如下方式安装即可: sudo apt-get install zlib1g-dev 注意有些系统上可能是: sudo apt-get install zlib-dev
1115 0