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++のマルチスレッド処理のサンプルや概要について

  <目次> (1) C++のマルチスレッド処理のサンプルや概要について  (1-1) C++のマルチスレッドの概要  (1-2) 構文1:関数ポインタ式  (1-3) 構文1(例):関数ポ …

Linux:定期的に再起動するスクリプト

Linuxサーバーを定期的に再起動するスクリプトを紹介します。定期的に再起動するという処理はシステム構築においては、運用の中で定義される「死活監視」に関連してくる話になります。 ●シェルとは?シェルス …

C++の「::」の記載の意味について

  <目次> (1) C++の「::」の記載の意味について  (1-1) 「::」の意味は?  (1-2) サンプル①:スコープ演算子「::」を使ってグローバル変数にアクセス  (1-3) …

CORBA通信のPOA(Portable Object Adapter)とは?

  <目次> (1) CORBA通信のPOA(Portable Object Adapter)とは?  (1-1) 概要と特徴  (1-2) 一般的なPOAの処理構成  (1-3) POAの …

Linuxのテキスト入力で日本語が文字化けした時の対処法と解説

Linuxのテキスト入力等で日本語が文字化けした時の対処方法を紹介します。 (0)目次&概説 (1) 障害・不具合の概要 (2) 文字化けの対処法 (3) 解説(文字コードについて) (1) 障害・不 …

  • English (United States)
  • 日本語
Top