Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

C++ Linux

C++をLinuxでコンパイルする方法について

投稿日:2021年8月24日 更新日:

 

<目次>

(1) C++をLinuxでコンパイルする方法について
 (1-1) STEP0:【事前準備】ターミナル機能の準備(ターミナル、Teraterm、Putty)
 (1-2) STEP1:【事前準備】C++コンパイラのインストール
 (1-3) STEP2:【事前準備】テキストエディタのインストール
 (1-4) STEP3:HelloWorld用プログラムの作成&サーバにアップロード
 (1-5) STEP4:プログラムのコンパイル
 (1-6) STEP5:プログラムの実行
 (1-7) 補足:もしPG作成もサーバ側で行う場合

(1) C++をLinuxでコンパイルする方法について

今回はC++をLinuxでコンパイルする方法という事で、Visual Studio等が使えない環境(※補足1)においてC++を開発する場合のやり方について説明します。

(※補足1)
Visual StudioはWindowとMacのみ対応しており、Linuxでは使えません。しかし代替策としてVisual Studio Codeが使用できます。ただし、VS CodeはIDEではなく「エディタ」の括りであるため、Visual Studioの代替にはなりません。

全体像としては次のようなイメージになります。まず前半のSTEP0、1、2で必要なソフトウェアを導入して、後半のSTEP3でテキストエディタを使いプログラムを作り、STEP4、5でサーバ側でのコンパイル~実行を行います。

(図100)

(1-1) STEP0:【事前準備】ターミナル機能の準備(ターミナル、Teraterm、Putty)

ターミナルはOSのシェル(ユーザがカーネルを操作する為のIF)を操作するためのIFです。今回はクライアントからリモート接続でターミナル機能を実現できるTeratermを導入し、リモートでサーバを操作します(Putty等でも代替可能)。
 
Teratermは下記のサイト等からダウンロードできます。
 

(1-2) STEP1:【事前準備】C++コンパイラのインストール

C++をコマンドラインからコンパイルするためには、「GCC」(※注1)や「mingw」といったコンパイラが必要です。今回はGCCコンパイラを含むパッケージ「Development Tools」をインストールします。
 
(※注1)GCCは「GNU Compiler Collection」の略で、複数のメジャーなプログラミング言語(CやC++)のコンパイラを統合して配布したものです。
 
①「Development Tools」をインストール
・下記コマンドを実行します。
(コマンド)
$ sudo yum groupinstall "Development Tools" --setopt=group_package_types=mandatory,default,optional
 
(図111)①

・「Is this ok [y/d/N]:」で「y」を入力
(図111)②

・「Complete」が出たら完了
(図111)③

②インストール後のチェック
・チェック#1:gccのインストール場所を確認します
(コマンド)
$ whereis gcc
 
(結果例)
gcc: /usr/bin/gcc /usr/lib/gcc /usr/libexec/gcc /usr/lib64/ccache/gcc /usr/share/man/man1/gcc.1.gz
 
(図112)①

・チェック#2:コンパイラのバージョン確認
 
(コマンド)
$ gcc –version
 
(結果例)
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

 

目次にもどる

(1-3) STEP2:【事前準備】テキストエディタのインストール

次にテキストエディタをインストールします。これはローカルでプログラムを編集する用です。特にメジャーな所だと「サクラエディタ」や「Notepad++」などが使いやすいと思いますが、何でもOKです。
 
・サクラエディタ
 
・Notepad++
 

(1-4) STEP3:HelloWorld用プログラムの作成&サーバにアップロード

・①HelloWorld用プログラムの作成
先ほど導入したテキストエディタで下記のHello World用プログラムを作成します。名前は「test1」で拡張子は「.cpp」で保存します。
 
#include 
using namespace std;
int main() 
{
    cout << "Hello, World Rainbow Engine!\n";
    return 0;
}

(図131)

・②サーバにアップロード
TeraTermのSSH SCP等で、作成した「test1.cpp」をサーバの任意のディレクトリに配置します。
(図132)

(1-5) STEP4:プログラムのコンパイル

・①下記コマンドでコンパイルを行います。
(コマンド)
$ cd [test1.cppが格納されているディレクトリ]
$ g++ -o rainbowtest test.cpp

(図141)


生成後にlsコマンドで「rainbowtest」が生成されたか?を確認します。
(図142)

(補足)
「g++」がコマンドで「-o」オプションで制せ英される実行形式ファイル(.out)の名前を「rainbowtest」に指定しています。最後の「test.cpp」は先ほどアップロードした、コンパイル対象のC++モジュールです。
 

目次にもどる

(1-6) STEP5:プログラムの実行

コマンドラインから実行する場合は次のように実行します。
 
(コマンド)
./hello
 
実行した結果「Hello, World Rainbow Engine!」が表示されればOKです。
(図151)
 

目次にもどる

(1-7) 補足:もしPG作成もサーバ側で行う場合

もしプログラム作成作業も全てサーバ側で行いたい場合、STEP2のテキストエディタをサーバ側にインストールする必要があるのと、クライアント⇒サーバにリモートデスクトップするための環境を用意する事が望ましいです(GUIによる操作が出来るため)。
 
各STEPの工程は次のように変化します。
(表)
STEP0:【事前準備】ターミナル機能の準備(ターミナル、Teraterm、Putty) ⇒代わりにリモートデスクトップ環境を構築する
(参考)https://rainbow-engine.com/rdp-vncserver-centos7/
STEP1:【事前準備】C++コンパイラのインストール 変更なし
STEP2:【事前準備】テキストエディタのインストール ⇒サーバ側で実施(geditやviエディタなどを導入)
STEP3:HelloWorld用プログラムの作成&サーバにアップロード ⇒サーバ側で実施(geditやviエディタなどを使って作成)
STEP4:プログラムのコンパイル 変更なし
STEP5:プログラムの実行 変更なし

目次にもどる

Adsense審査用広告コード


Adsense審査用広告コード


-C++, Linux

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

C++のtime関数やtime_t型の使い方について

  <目次> (1) C++のtime関数やtime_t型の使い方について  (1-1) C++のtime関数とtime_t型とは?  (1-2) C++のtime_t関数のサンプル (1) …

C++で「静的でないメンバー参照は特定のオブジェクトを基準とする相対参照である必要があります」エラーが出た時の対処

  <目次> (1) C++で「静的でないメンバー参照は特定のオブジェクトを基準とする相対参照である必要があります」エラーが出た時の対処  (1-1) エラーメッセージ  (1-2) 原因 …

Linux:サーバ死活管理スクリプト

システム構築では「運用」の中で死活監視を行いますが、その概要と簡単なLinuxでの例を紹介します。 ●死活監視とは サーバーが止まらずに動いているか?のチェックを行うことです。 最も身近な死活チェック …

C++で発生した「 _CrtIsValidHeapPointer(block)」と「is_block_type_valid(header->_block_use)」エラーについて

  <目次> (1) C++で発生した「 _CrtIsValidHeapPointer(block)」と「is_block_type_valid(header->_block_use) …

Linuxで環境変数を永続化させる方法と手順について

<目次> (1) Linuxで環境変数を永続化させる方法と手順について  (1-1) 実現方法  (1-2) 設定手順 (1) Linuxで環境変数を永続化させる方法と手順について Linuxにおいて …

  • English (United States)
  • 日本語
Top