CMake入門1/5:基於阿里雲ECS搭建體驗環境

雷語發表於2019-01-30

序言

CMake 入門共分為五個小節,規劃如下:

  • 基於阿里雲 ECS 搭建體驗環境
  • 第一個程式 helloworld
  • 體驗有目錄結構的專案構建
  • 構建共享庫
  • 構建靜態庫

實驗環境

本系列基於阿里雲 ECS 環境進行,具體基本資訊如下:

  • ECS 配置
    CPU 1核,記憶體 1G,網路 1M,磁碟 20G
  • 登入後的資訊
Welcome to Alibaba Cloud Elastic Compute Service !
  • OS 版本
[root@myecs]#uname -a
Linux 3.10.0-514.26.2.el7.x86_64 #1 SMP Tue Jul 4 15:04:05 UTC 2017 x86_64 GNU/Linux
[root@myecs]# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core) 
  • OS 自帶的gcc 版本
[root@myecs]# gcc --version
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-11)
Copyright © 2015 Free Software Foundation, Inc.
本程式是自由軟體;請參看原始碼的版權宣告。本軟體沒有任何擔保;
包括沒有適銷性和某一專用目的下的適用性擔保。

搭建體驗環境

1.安裝 CMake

ECS 預設沒有安裝 CMake,需自行安裝。

  • 安裝命令
[root@myecs]#yum install cmake
  • 安裝結果檢查
[root@myecs]#cmake -version
cmake version 2.8.12.2
  • 詳細過程輸出參考,參見附一。

2.安裝 gcc-c++

非必須,但後續體驗需要,否則會遇到附三的錯誤資訊。

  • 安裝命令
[root@myecs]# yum install gcc-c++
  • 安裝結果檢查
[root@myecs]# g++ -v
使用內建 specs。
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/lto-wrapper
目標:x86_64-redhat-linux
配置為:../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,objc,obj-c++,java,fortran,ada,go,lto --enable-plugin --enable-initfini-array --disable-libgcj --with-isl=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/isl-install --with-cloog=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/cloog-install --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux
執行緒模型:posix
gcc 版本 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) 
  • 詳細過程輸出參考,參見附二。

CMake相關連結

附錄

附一 CMake 安裝過程

[root@myecs]# yum install cmake
已載入外掛:fastestmirror
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
base                                                     | 3.6 kB     00:00     
epel                                                     | 4.7 kB     00:00     
extras                                                   | 3.4 kB     00:00     
updates                                                  | 3.4 kB     00:00     
(1/6): base/7/x86_64/group_gz                              | 166 kB   00:00     
(2/6): extras/7/x86_64/primary_db                          | 156 kB   00:00     
(3/6): epel/x86_64/updateinfo                              | 956 kB   00:00     
(4/6): updates/7/x86_64/primary_db                         | 1.4 MB   00:00     
(5/6): base/7/x86_64/primary_db                            | 6.0 MB   00:00     
(6/6): epel/x86_64/primary_db                              | 6.6 MB   00:00     
Determining fastest mirrors
正在解決依賴關係
--> 正在檢查事務
---> 軟體包 cmake.x86_64.0.2.8.12.2-2.el7 將被 安裝
--> 正在處理依賴關係 libarchive.so.13()(64bit),它被軟體包 cmake-2.8.12.2-2.el7.x86_64 需要
--> 正在檢查事務
---> 軟體包 libarchive.x86_64.0.3.1.2-10.el7_2 將被 安裝
--> 解決依賴關係完成

依賴關係解決

================================================================================
 Package            架構           版本                      源            大小
================================================================================
正在安裝:
 cmake              x86_64         2.8.12.2-2.el7            base         7.1 M
為依賴而安裝:
 libarchive         x86_64         3.1.2-10.el7_2            base         318 k

事務概要
================================================================================
安裝  1 軟體包 (+1 依賴軟體包)

總下載量:7.4 M
安裝大小:27 M
Is this ok [y/d/N]: y
Downloading packages:
(1/2): libarchive-3.1.2-10.el7_2.x86_64.rpm                | 318 kB   00:00     
(2/2): cmake-2.8.12.2-2.el7.x86_64.rpm                     | 7.1 MB   00:00     
--------------------------------------------------------------------------------
總計                                                28 MB/s | 7.4 MB  00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在安裝    : libarchive-3.1.2-10.el7_2.x86_64                            1/2 
  正在安裝    : cmake-2.8.12.2-2.el7.x86_64                                 2/2 
  驗證中      : cmake-2.8.12.2-2.el7.x86_64                                 1/2 
  驗證中      : libarchive-3.1.2-10.el7_2.x86_64                            2/2 

已安裝:
  cmake.x86_64 0:2.8.12.2-2.el7                                                 

作為依賴被安裝:
  libarchive.x86_64 0:3.1.2-10.el7_2                                            

完畢!
[root@myecs]# cmake -version
cmake version 2.8.12.2

附二 gcc-c++安裝過程

[root@myecs]# yum install gcc-c++
已載入外掛:fastestmirror
base                                                     | 3.6 kB     00:00     
epel                                                     | 4.7 kB     00:00     
extras                                                   | 3.4 kB     00:00     
updates                                                  | 3.4 kB     00:00     
(1/3): extras/7/x86_64/primary_db                          | 156 kB   00:00     
(2/3): epel/x86_64/updateinfo                              | 954 kB   00:00     
(3/3): epel/x86_64/primary_db                              | 6.6 MB   00:00     
Loading mirror speeds from cached hostfile
正在解決依賴關係
--> 正在檢查事務
---> 軟體包 gcc-c++.x86_64.0.4.8.5-36.el7 將被 安裝
--> 正在處理依賴關係 libstdc++-devel = 4.8.5-36.el7,它被軟體包 gcc-c++-4.8.5-36.el7.x86_64 需要
--> 正在處理依賴關係 libstdc++ = 4.8.5-36.el7,它被軟體包 gcc-c++-4.8.5-36.el7.x86_64 需要
--> 正在處理依賴關係 gcc = 4.8.5-36.el7,它被軟體包 gcc-c++-4.8.5-36.el7.x86_64 需要
--> 正在檢查事務
---> 軟體包 gcc.x86_64.0.4.8.5-11.el7 將被 升級
---> 軟體包 gcc.x86_64.0.4.8.5-36.el7 將被 更新
--> 正在處理依賴關係 libgomp = 4.8.5-36.el7,它被軟體包 gcc-4.8.5-36.el7.x86_64 需要
--> 正在處理依賴關係 cpp = 4.8.5-36.el7,它被軟體包 gcc-4.8.5-36.el7.x86_64 需要
--> 正在處理依賴關係 libgcc >= 4.8.5-36.el7,它被軟體包 gcc-4.8.5-36.el7.x86_64 需要
---> 軟體包 libstdc++.x86_64.0.4.8.5-11.el7 將被 升級
---> 軟體包 libstdc++.x86_64.0.4.8.5-36.el7 將被 更新
---> 軟體包 libstdc++-devel.x86_64.0.4.8.5-36.el7 將被 安裝
--> 正在檢查事務
---> 軟體包 cpp.x86_64.0.4.8.5-11.el7 將被 升級
---> 軟體包 cpp.x86_64.0.4.8.5-36.el7 將被 更新
---> 軟體包 libgcc.x86_64.0.4.8.5-11.el7 將被 升級
---> 軟體包 libgcc.x86_64.0.4.8.5-36.el7 將被 更新
---> 軟體包 libgomp.x86_64.0.4.8.5-11.el7 將被 升級
---> 軟體包 libgomp.x86_64.0.4.8.5-36.el7 將被 更新
--> 解決依賴關係完成

依賴關係解決

================================================================================
 Package                 架構           版本                 源            大小
================================================================================
正在安裝:
 gcc-c++                 x86_64         4.8.5-36.el7         base         7.2 M
為依賴而安裝:
 libstdc++-devel         x86_64         4.8.5-36.el7         base         1.5 M
為依賴而更新:
 cpp                     x86_64         4.8.5-36.el7         base         5.9 M
 gcc                     x86_64         4.8.5-36.el7         base          16 M
 libgcc                  x86_64         4.8.5-36.el7         base         102 k
 libgomp                 x86_64         4.8.5-36.el7         base         157 k
 libstdc++               x86_64         4.8.5-36.el7         base         304 k

事務概要
================================================================================
安裝  1 軟體包 (+1 依賴軟體包)
升級           ( 5 依賴軟體包)

總下載量:31 M
Is this ok [y/d/N]: y
Downloading packages:
Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
(1/7): cpp-4.8.5-36.el7.x86_64.rpm                         | 5.9 MB   00:00     
(2/7): gcc-4.8.5-36.el7.x86_64.rpm                         |  16 MB   00:00     
(3/7): gcc-c++-4.8.5-36.el7.x86_64.rpm                     | 7.2 MB   00:00     
(4/7): libgcc-4.8.5-36.el7.x86_64.rpm                      | 102 kB   00:00     
(5/7): libstdc++-4.8.5-36.el7.x86_64.rpm                   | 304 kB   00:00     
(6/7): libgomp-4.8.5-36.el7.x86_64.rpm                     | 157 kB   00:00     
(7/7): libstdc++-devel-4.8.5-36.el7.x86_64.rpm             | 1.5 MB   00:00     
--------------------------------------------------------------------------------
總計                                                46 MB/s |  31 MB  00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在更新    : libgcc-4.8.5-36.el7.x86_64                                 1/12 
  正在更新    : libstdc++-4.8.5-36.el7.x86_64                              2/12 
  正在安裝    : libstdc++-devel-4.8.5-36.el7.x86_64                        3/12 
  正在更新    : libgomp-4.8.5-36.el7.x86_64                                4/12 
  正在更新    : cpp-4.8.5-36.el7.x86_64                                    5/12 
  正在更新    : gcc-4.8.5-36.el7.x86_64                                    6/12 
  正在安裝    : gcc-c++-4.8.5-36.el7.x86_64                                7/12 
  清理        : gcc-4.8.5-11.el7.x86_64                                    8/12 
  清理        : libstdc++-4.8.5-11.el7.x86_64                              9/12 
  清理        : libgcc-4.8.5-11.el7.x86_64                                10/12 
  清理        : cpp-4.8.5-11.el7.x86_64                                   11/12 
  清理        : libgomp-4.8.5-11.el7.x86_64                               12/12 
  驗證中      : cpp-4.8.5-36.el7.x86_64                                    1/12 
  驗證中      : libgomp-4.8.5-36.el7.x86_64                                2/12 
  驗證中      : gcc-4.8.5-36.el7.x86_64                                    3/12 
  驗證中      : libgcc-4.8.5-36.el7.x86_64                                 4/12 
  驗證中      : gcc-c++-4.8.5-36.el7.x86_64                                5/12 
  驗證中      : libstdc++-4.8.5-36.el7.x86_64                              6/12 
  驗證中      : libstdc++-devel-4.8.5-36.el7.x86_64                        7/12 
  驗證中      : libgcc-4.8.5-11.el7.x86_64                                 8/12 
  驗證中      : cpp-4.8.5-11.el7.x86_64                                    9/12 
  驗證中      : libgomp-4.8.5-11.el7.x86_64                               10/12 
  驗證中      : gcc-4.8.5-11.el7.x86_64                                   11/12 
  驗證中      : libstdc++-4.8.5-11.el7.x86_64                             12/12 

已安裝:
  gcc-c++.x86_64 0:4.8.5-36.el7                                                 

作為依賴被安裝:
  libstdc++-devel.x86_64 0:4.8.5-36.el7                                         

作為依賴被升級:
  cpp.x86_64 0:4.8.5-36.el7               gcc.x86_64 0:4.8.5-36.el7            
  libgcc.x86_64 0:4.8.5-36.el7            libgomp.x86_64 0:4.8.5-36.el7        
  libstdc++.x86_64 0:4.8.5-36.el7        

完畢!

附三 未安裝gcc-c++時可能遇到的報錯資訊

[root@myecs]# cmake .
-- The C compiler identification is GNU 4.8.5
-- The CXX compiler identification is unknown
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
CMake Error: your CXX compiler: "CMAKE_CXX_COMPILER-NOTFOUND" was not found.   Please set CMAKE_CXX_COMPILER to a valid compiler path or name.
-- Configuring incomplete, errors occurred!
See also "/home/cmakedemo/demo1/CMakeFiles/CMakeOutput.log".
See also "/home/cmakedemo/demo1/CMakeFiles/CMakeError.log".


相關文章