【CMake & G++ GCC】在 Linux 环境中编译 C++ 源码

在 Linux 环境中编译 C++ 源码

C++ 技术栏
文章演示了在 乌班图 环境下编译mathematical-expression-cpp 动态库源码,!

目录

介绍

C++ 的源码是需要编译的,不同操作系统的编译操作不同,本次我们演示的是在 Linux 中进行源码的编译,演示过程中使用 mathematical-expression-cpp 库的源码,来做被编译的源码。

前置准备

在操作进行之前我们需要进行一些准备,请按照下面的操作来一步步的操作!

apt 更新

在这里我们要做的就是安装 Cmake 和 GCC !

sudo apt-update
sudo apt-get install cmake
sudo apt install make
sudo apt install build-essential

下载并进入源码包

首先我们需要在 Linux 中的某个目录执行下面的命令

# 下载 mathematical-expression-cpp 库的源码 版本号可以根据需要进行修改!
wget https://github.com/BeardedManZhao/mathematical-expression-cpp/archive/refs/tags/1.0.2.tar.gz

# 为下载好的源码包进行解压
chmod 777 ./1.0.2.tar.gz

# 进入到源码目录
cd mathematical-expression-cpp-1.0.2

操作完毕之后,我们可以在目录中看到下面的结构!到这里就算是解压完毕了,成功进入了源码目录。

在这里插入图片描述

开始编译源码包

接下来我们就需要使用到 Cmake 来进行编译了,请继续按步骤来进行操作!

修改 CMakeList 文件

这个文件中包含的就是有关项目中的一些信息,您可以在这里按照您的要求进行变更,例如指定编译时需要使用的Cmake 版本等

vim ./CMakeLists.txt

下面就是文件中的内容

cmake_minimum_required(VERSION 3.22)
project(mathematical_expression_cpp)

set(CMAKE_CXX_STANDARD 11)

# 头文件存储目录设置
include_directories(${PROJECT_SOURCE_DIR}/include)
add_library(
        mathematical_expression_cpp SHARED
        src/core/container/CalculationResults.cpp include/CalculationResults.h
        include/Utils.h
        include/ConstantRegion.h
        src/core/calculation/PrefixExpressionOperation.cpp
        src/exceptional/MExceptional.cpp include/MExceptional.h
        src/utils/NumberUtils.cpp src/utils/StrUtils.cpp src/dataContainer/MEStack.cpp include/MEStack.h include/PrefixExpressionOperation.h
        src/core/calculation/NumberCalculation.cpp include/NumberCalculation.h
        src/core/calculation/Calculation.cpp include/Calculation.h
        src/core/mathematical_expression.cpp include/mathematical_expression.h
        src/core/calculation/BracketsCalculation.cpp include/BracketsCalculation.h
        src/core/calculation/BracketsCalculationTwo.cpp include/BracketsCalculationTwo.h
        src/core/calculation/BooleanCalculation.cpp include/BooleanCalculation.h
        src/core/calculation/BooleanCalculationTwo.cpp include/BooleanCalculationTwo.h
        src/core/calculation/FunctionManager.cpp include/FunctionManager.h
        src/core/calculation/FunctionFormulaCalculation.cpp include/FunctionFormulaCalculation.h
        src/core/calculation/FunctionFormulaCalculationTwo.cpp include/FunctionFormulaCalculationTwo.h
        src/core/calculation/CalculationConstant.cpp include/CalculationConstant.h
        src/core/calculation/CumulativeCalculation.cpp include/CumulativeCalculation.h
        src/core/calculation/FastSumOfIntervalsBrackets.cpp include/FastSumOfIntervalsBrackets.h src/core/calculation/SharedCalculation.cpp include/SharedCalculation.h)

开始进行 makeFile 的生成

在编译源码的时候需要依赖这个 makeFile 文件来进行编译操作,因此我们需要先生成这个文件,下面就是具体的操作!

# 直接在源码目录中创建一个 build 文件夹,这个文件夹是用来存放 makeFile 文件的
root@liming-virtual-machine:~/MyTest/mathematical-expression-cpp-1.0.2# mkdir build
root@liming-virtual-machine:~/MyTest/mathematical-expression-cpp-1.0.2# cd build/
root@liming-virtual-machine:~/MyTest/mathematical-expression-cpp-1.0.2/build# 

然后我们直接执行下面的命令 就可以在当前目录生成makeFile文件。

cmake ../

开始编译

接下来我们使用 make 进行最终的编译即可,下面就是相关的一些日志

root@liming-virtual-machine:~/MyTest/mathematical-expression-cpp-1.0.2/build# make
[  4%] Building CXX object CMakeFiles/mathematical_expression_cpp.dir/src/core/container/CalculationResults.cpp.o
[  9%] Building CXX object CMakeFiles/mathematical_expression_cpp.dir/src/core/calculation/PrefixExpressionOperation.cpp.o
[ 14%] Building CXX object CMakeFiles/mathematical_expression_cpp.dir/src/exceptional/MExceptional.cpp.o
[ 19%] Building CXX object CMakeFiles/mathematical_expression_cpp.dir/src/utils/NumberUtils.cpp.o
[ 23%] Building CXX object CMakeFiles/mathematical_expression_cpp.dir/src/utils/StrUtils.cpp.o
[ 28%] Building CXX object CMakeFiles/mathematical_expression_cpp.dir/src/dataContainer/MEStack.cpp.o
[ 33%] Building CXX object CMakeFiles/mathematical_expression_cpp.dir/src/core/calculation/NumberCalculation.cpp.o
[ 38%] Building CXX object CMakeFiles/mathematical_expression_cpp.dir/src/core/calculation/Calculation.cpp.o
[ 42%] Building CXX object CMakeFiles/mathematical_expression_cpp.dir/src/core/mathematical_expression.cpp.o
[ 47%] Building CXX object CMakeFiles/mathematical_expression_cpp.dir/src/core/calculation/BracketsCalculation.cpp.o
[ 52%] Building CXX object CMakeFiles/mathematical_expression_cpp.dir/src/core/calculation/BracketsCalculationTwo.cpp.o
[ 57%] Building CXX object CMakeFiles/mathematical_expression_cpp.dir/src/core/calculation/BooleanCalculation.cpp.o
[ 61%] Building CXX object CMakeFiles/mathematical_expression_cpp.dir/src/core/calculation/BooleanCalculationTwo.cpp.o
[ 66%] Building CXX object CMakeFiles/mathematical_expression_cpp.dir/src/core/calculation/FunctionManager.cpp.o
[ 71%] Building CXX object CMakeFiles/mathematical_expression_cpp.dir/src/core/calculation/FunctionFormulaCalculation.cpp.o
[ 76%] Building CXX object CMakeFiles/mathematical_expression_cpp.dir/src/core/calculation/FunctionFormulaCalculationTwo.cpp.o
[ 80%] Building CXX object CMakeFiles/mathematical_expression_cpp.dir/src/core/calculation/CalculationConstant.cpp.o
[ 85%] Building CXX object CMakeFiles/mathematical_expression_cpp.dir/src/core/calculation/CumulativeCalculation.cpp.o
[ 90%] Building CXX object CMakeFiles/mathematical_expression_cpp.dir/src/core/calculation/FastSumOfIntervalsBrackets.cpp.o
[ 95%] Building CXX object CMakeFiles/mathematical_expression_cpp.dir/src/core/calculation/SharedCalculation.cpp.o
[100%] Linking CXX shared library libmathematical_expression_cpp.so
[100%] Built target mathematical_expression_cpp

查看最终编译好的包

下面的 so 文件就是编译好的动态库文件。

请注意 编译好之后是什么样子的库文件,这和 [修改 CMakeList 文件](#修改 CMakeList 文件 “修改 CMakeList 文件”) 中的文件内容息息相关!我们这里使用的是一个动态库项目,因此在文件中是有 set(CMAKE_CXX_STANDARD 11) 这样的一句话的,编译操作也是按照 动态库来进行编译的。

root@liming-virtual-machine:~/MyTest/mathematical-expression-cpp-1.0.2/build# ll
total 1768
drwxr-xr-x 3 root root    4096  312 09:52 ./
drwxrwxr-x 7 root root    4096  312 09:50 ../
-rw-r--r-- 1 root root   13908  312 09:51 CMakeCache.txt
drwxr-xr-x 5 root root    4096  312 09:52 CMakeFiles/
-rw-r--r-- 1 root root    1668  312 09:51 cmake_install.cmake
-rwxr-xr-x 1 root root 1738016  312 09:52 libmathematical_expression_cpp.so*
-rw-r--r-- 1 root root   34229  312 09:51 Makefile

操作记录
作者:root
操作时间:2024-03-12 09:55:50 星期二
事件描述备注:保存/发布
☯ 中国 天津

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值