在 Linux 环境中编译 C++ 源码
C++ 技术栏
文章演示了在 乌班图 环境下编译mathematical-expression-cpp
动态库源码,!
目录
文章目录
- 在 Linux 环境中编译 C++ 源码
- 目录
- 介绍
- 前置准备
- apt 更新
- 下载并进入源码包
- 开始编译源码包
- 修改 CMakeList 文件
- 开始进行 makeFile 的生成
- 开始编译
- 查看最终编译好的包
介绍
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 3月 12 09:52 ./
drwxrwxr-x 7 root root 4096 3月 12 09:50 ../
-rw-r--r-- 1 root root 13908 3月 12 09:51 CMakeCache.txt
drwxr-xr-x 5 root root 4096 3月 12 09:52 CMakeFiles/
-rw-r--r-- 1 root root 1668 3月 12 09:51 cmake_install.cmake
-rwxr-xr-x 1 root root 1738016 3月 12 09:52 libmathematical_expression_cpp.so*
-rw-r--r-- 1 root root 34229 3月 12 09:51 Makefile
操作记录
作者:root
操作时间:2024-03-12 09:55:50 星期二
事件描述备注:保存/发布
☯ 中国 天津