搭建 C/C++_CMake_Boost_git 開發環境

搭建 C++ 開發環境

步驟 1:啟動 Ubuntu 18.04 容器

創建并啟動一個 Ubuntu 18.04 容器:

docker run -itd --name cppubuntu ubuntu:18.04
  • -itd:以交互模式運行容器,并在后臺運行。
  • --name cppubuntu:命名容器為 cppubuntu
  • ubuntu:18.04:使用 Ubuntu 18.04 鏡像。

進入容器:

docker exec -it cppubuntu /bin/bash

步驟 2:更新軟件源

更新 apt 軟件源以確保可以安裝最新的軟件包:

apt-get update

步驟 3:安裝 GCC/G++ 工具鏈

安裝 build-essential 包,包含 GCC、G++ 和其他編譯工具:

apt-get install -y build-essential
  • -y:自動確認安裝。

測試 G++ 版本和 C++17 支持

創建一個簡單的 C++ 測試文件以驗證 G++ 是否支持 C++17:

echo '#include <iostream>' > test.cpp
echo 'int main() { std::cout << __cplusplus << std::endl; return 0; }' >> test.cpp
g++ -std=c++17 test.cpp -o test
./test
  • 輸出 201703L 表示支持 C++17 標準。

步驟 4:安裝 wget

安裝 wget 用于下載文件:

apt-get install -y wget

步驟 5:安裝 Boost 庫

Boost 是一個功能強大的 C++ 庫,下面是安裝步驟。

5.1 下載 Boost 源碼

下載 Boost 1.82.0 源碼包:

wget https://archives.boost.io/release/1.88.0/source/boost_1_88_0.tar.gz

提示:如果下載速度慢,可在本地(如 Windows)下載后,通過以下方式將文件傳輸到容器:

  1. 將文件上傳到云服務器(例如通過 FileZilla)。
  2. 復制到容器:
docker cp /home/ubuntu/boost_1_88_0.tar.gz cppubuntu:/test

5.2 安裝 Boost 依賴庫

安裝 Boost 編譯所需的依賴:

apt-get install -y python-dev autotools-dev libicu-dev build-essential libbz2-dev libboost-all-dev

5.3 解壓并安裝 Boost

解壓源碼并進行安裝:

tar -zxvf /test/boost_1_88_0.tar.gz
cd boost_1_88_0
./bootstrap.sh --prefix=/usr
./b2 install
  • --prefix=/usr:指定安裝路徑(默認安裝在 /usr/local)。
  • ./b2 install:編譯并安裝 Boost 庫。

5.4 測試 Boost 安裝

創建測試文件 boosthello.cpp

#include <iostream>
#include <boost/version.hpp>
using namespace std;
int main() {cout << "Boost 版本: " << BOOST_VERSION << endl;return 0;
}

編譯并運行:

g++ -o boosthello boosthello.cpp
./boosthello
  • 輸出類似 Boost 版本: 108200,表示 Boost 1.82.0 安裝成功。

步驟 6:安裝 Git

安裝 Git 并配置用戶信息:

apt-get install -y git
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
  • 替換 "Your Name""your.email@example.com" 為您的實際信息。

步驟 7:安裝 CMake

CMake 是常用的構建工具,下面是安裝步驟。

7.1 下載 CMake 源碼

下載 CMake 3.27.0 源碼包:

wget https://github.com/Kitware/CMake/releases/download/v3.27.0/cmake-3.27.0.tar.gz

7.2 安裝 CMake 依賴

安裝必要的 SSL 庫:

apt-get install -y libssl-dev

7.3 解壓并編譯 CMake

解壓源碼并進行編譯安裝:

tar -zxvf cmake-3.27.0.tar.gz
cd cmake-3.27.0
./bootstrap
make
make install

7.4 測試 CMake 安裝

驗證 CMake 版本:

cmake --version
  • 輸出類似 cmake version 3.27.0,表示安裝成功。

注意事項

  1. 網絡問題:如果 wget 下載緩慢,考慮使用本地下載后通過 docker cp 傳輸。
  2. 權限問題:容器內命令默認以 root 用戶執行,無需 sudo。若在宿主機操作,可能需要 sudo
  3. 磁盤空間:確保容器有足夠空間存放源碼和編譯文件。
  4. 版本更新:Boost 和 CMake 的版本可根據需要替換為最新版本,注意檢查依賴兼容性。

總結

完成以上步驟后,將在 Ubuntu 18.04 容器中擁有一個完整的 C++ 開發環境,支持 C++17、Boost 庫、Git 和 CMake。您可以開始編寫、編譯和運行 C++ 項目。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/906943.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/906943.shtml
英文地址,請注明出處:http://en.pswp.cn/news/906943.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

OceanBase數據庫全面指南(查詢進階篇DQL)

文章目錄 一、OceanBase條件查詢詳解——WHERE子句的藝術1.1 WHERE子句基礎語法與原理1.2 基礎條件查詢實戰1.3 高級條件表達式1.4 分布式環境下的條件查詢優化二、OceanBase排序查詢——ORDER BY深度解析2.1 ORDER BY基礎與執行原理2.2 單字段排序實戰2.3 多字段復雜排序2.4 排…

.NET 10 - 嘗試一下Minimal Api的Validation新特性

1.簡單介紹 2025年11月微軟將會發布.NET10&#xff0c;這是LTS(Long Term Support)版本。當前.NET10已經處于Preview4版本&#xff0c;微軟對Runtime, Library, SDK, C#, Asp.NET Core, MAUI等都做了很多enhancement。近些年微軟對Minimal Api一直在持續地更新。在.NET8中, Mi…

vue+threeJS 創建鏤空球體(SphereGeometry)

嗨&#xff0c;我是小路。今天主要和大家分享的主題是“vuethreeJS 創建鏤空球體&#xff08;SphereGeometry&#xff09;”。 上次看到一個做鏤空球體的項目&#xff0c;自己也準備嘗試著做一做。今天終于做完了&#xff0c;并對這個項目進行梳理。 鏤空球體示例效果…

Docker 鏡像打包到本地

保存鏡像 使用 docker save 命令將鏡像保存為一個 tar 文件。命令格式如下&#xff1a; docker save [options] IMAGE [IMAGE...]示例&#xff1a;docker save -o centos.tar centos:latest--output 或 -o&#xff1a;將輸出保存到指定的文件中。 加載鏡像 如果需要在其他機器…

前端常見的安全問題

跨站腳本攻擊(XSS) XSS&#xff08;跨站腳本攻擊&#xff0c;Cross-Site Scripting&#xff09;是一種通過在網頁中注入惡意腳本&#xff0c;從而竊取用戶數據或控制用戶行為的攻擊方式。注入的js跟網頁與原有的js具有同樣的權限&#xff0c;可以獲得server端數據、可以獲取co…

Spring Boot與Disruptor高性能隊列整合指南

精心整理了最新的面試資料和簡歷模板&#xff0c;有需要的可以自行獲取 點擊前往百度網盤獲取 點擊前往夸克網盤獲取 一、Disruptor簡介 Disruptor是LMAX公司開發的高性能無鎖隊列框架&#xff0c;其核心設計通過以下特性實現卓越性能&#xff1a; 環形數組結構&#xff08;…

MongoDB CRUD操作完全指南:從入門到精通

在當今數據驅動的時代&#xff0c;數據庫管理系統扮演著至關重要的角色。作為最受歡迎的NoSQL數據庫之一&#xff0c;MongoDB以其靈活的數據模型、卓越的可擴展性和強大的查詢能力贏得了開發者的青睞。本文將全面介紹MongoDB的核心操作——CRUD&#xff08;創建、讀取、更新、刪…

2025/5/25 學習日記 linux進階命令學習

tree:以樹狀結構顯示目錄下的文件和子目錄&#xff0c;方便直觀查看文件系統結構。 -d&#xff1a;僅顯示目錄&#xff0c;不顯示文件。-L [層數]&#xff1a;限制顯示的目錄層級&#xff08;如 -L 2 表示顯示當前目錄下 2 層子目錄&#xff09;。-h&#xff1a;以人類可讀的格…

quickbi實現關聯度分析(復刻PowerBI展示)

quickbi實現關聯度分析&#xff08;復刻PowerBI展示&#xff09; PowerBI通過DAX創建度量值&#xff0c;可以比較輕松的實現不同產品的關聯度分析&#xff0c;即購物籃分析&#xff0c;但如果使用quickbi&#xff0c;則需要通過sql代碼創建一個數據集&#xff0c;然后再通過數…

git 把一個分支A的某一個 commit 應用到另一個分支B上

先記住分支 A 上你要應用的那個 commit <commit_id> checkout 到分支 B git cherry-pick <commit_id>完成

基于Python的分布式網絡爬蟲系統設計與實現

摘要 隨著互聯網信息爆炸性增長&#xff0c;大規模數據采集與分析需求日益增加。本文設計并實現了一套基于Python的分布式網絡爬蟲系統&#xff0c;采用圖形用戶界面實現便捷操作&#xff0c;集成異步IO技術與多線程處理機制&#xff0c;有效解決了傳統爬蟲在數據獲取、處理效…

一文講透golang channel 的特點、原理及使用場景

在 Go 語言中&#xff0c;通道&#xff08;Channel&#xff09; 是實現并發編程的核心機制之一&#xff0c;基于 CSP&#xff08;Communicating Sequential Processes&#xff09; 模型設計。它不僅用于協程&#xff08;Goroutine&#xff09;之間的數據傳遞&#xff0c;還通過…

PID項目---硬件設計

該項目是立創訓練營項目&#xff0c;這些是我個人學習的記錄&#xff0c;記得比較潦草 1.硬件-電路原理電賽-TI-基于MSPM0的簡易PID項目_嗶哩嗶哩_bilibili 這個地方接地是靜電的考量 這個保護二極管是為了在電源接反的時候保護電腦等設備 大電容的作用&#xff1a;當電機工作…

【分庫分表】理論基礎

目錄 為什么要分庫分表 垂直分 垂直分庫 垂直分表 垂直切分優缺點 優點 缺點 水平分 水平分庫 水平分表 水平切分優缺點 優點 缺點 為什么要分庫分表 分庫分表是一種場景解決方案&#xff0c;它的出現是為了解決一些場景問題的 單表過大的話&#xff0c;讀請求進…

UDP和TCP示例程序

查看自己的IP地址 以管理員身份運行cmd 輸入 ipconfig 復制圖中的IPv4地址 UDP通信程序 UdpReceiver.java import java.net.*;public class UdpReceiver {public static void main(String[] args) {// 監聽端口&#xff08;需與發送端保持一致&#xff09;int listenPort…

Double使用注意事項

目錄 數據精度問題BigDecimal的正確使用構造陷阱數值比較除法舍入控制 RoundingMode 數據精度問題 Java開發中&#xff0c;Double類作為包裝類用于處理雙精度浮點數。浮點數double無法精確表示某些十進制小數&#xff08;如0.1&#xff09;&#xff0c;導致運算結果出現誤差 …

8.2 線性變換的矩陣

一、線性變換的矩陣 本節將對每個線性變換 T T T 都指定一個矩陣 A A A. 對于一般的列向量&#xff0c;輸入 v \boldsymbol v v 在空間 V R n \pmb{\textrm V}\pmb{\textrm R}^n VRn 中&#xff0c;輸出 T ( v ) T(\boldsymbol v) T(v) 在空間 W R m \textrm{\pmb W}\…

【后端高階面經:微服務篇】5、限流實戰:高并發系統流量治理全攻略

一、限流閾值的三維度計算模型 1.1 系統容量基準線:壓測驅動的安全水位 1.1.1 壓力測試方法論 測試目標:確定系統在資源安全水位(CPU≤80%,內存≤70%,RT≤500ms)下的最大處理能力測試工具: 單機壓測:JMeter(模擬10萬并發)、wrk(低資源消耗)集群壓測:LoadRunner …

同一無線網絡下的設備IP地址是否相同?

在家庭和辦公網絡普及的今天&#xff0c;許多人都會好奇&#xff1a;連接同一個Wi-Fi的設備是否共享相同的IP地址&#xff1f;這個問題看似簡單&#xff0c;實則涉及多個角度。本文將為您揭示其中的技術奧秘。 用一個無線網IP地址一樣嗎&#xff1f;同一無線網絡&#xff08;如…

git push出現 “HTTP 400 curl 22 The requested URL returned error: 400...“錯誤

錯誤內容是&#xff1a; 錯誤&#xff1a;RPC 失敗。HTTP 400 curl 22 The requested URL returned error: 400 send-pack: unexpected disconnect while reading sideband packet 致命錯誤&#xff1a;遠端意外掛斷了 檢查發現&#xff1b;文件大小5M&#xff0c;遠低于100M&a…