BioErrorLog Tech Blog

試行錯誤の記録

LinuxではじめてのC言語を実行する | vim + gcc

Linux (Ubuntu) + vimでC言語を実行する環境構築手順をまとめます。

はじめに

おはよう。@bioerrorlogです。

Linuxを入れたばかりだと、テキストファイルをどうやって作成するのか、どうやってコードを実行するのか、よくわかりません。

今回はvimを用いたC言語のコード編集から、コード実行までの手順をまとめます。

作業環境

Ubuntu18.04.1 LTS を
Windows10の上に、VMwareによって構築した仮想環境で起動しています。
www.bioerrorlog.work

LinuxでC言語を実行する

以下の手順を進めていきます。

  1. vimのインストール
  2. vimでテキストの作成
  3. gccのインストール/コンパイル
  4. ファイルの実行

vimのインストール

まずはテキストエディタvimをインストールします。 インストールする前に、とりあえずターミナルにvimについて聞いてみます。

$ vim
Command 'vim' not found, but can be installed with:

sudo apt install vim       
sudo apt install vim-gtk3  
sudo apt install vim-tiny  
sudo apt install neovim    
sudo apt install vim-athena
sudo apt install vim-gtk   
sudo apt install vim-nox  

vimのインストール方法を教えてくれました。 さっそくインストールします。

$ sudo apt install vim     

これでvimのインストールが完了です

vimでテキストの作成

vimを使ってC言語用の".c"ファイルを作成します。

$ vim test.c

このようにすると、test.cファイルのvimエディット画面に移行します。
vimのエディット画面は、慣れないと難しい挙動なので注意が必要です。

まず、"i"を押すことで"-- INSERT --"モードになり、普通に文字を編集することができます。
例えば、次のようにしてコードを書きます。

#include <stdio.h>

int main(int argc, char *argv[]) {
    printf("Hello, Lain.\n");
    return 0;
}

いろいろと書きましたが、とりあえずはprintf("Hello, Lain.\n");によって文字列”Hello, Lain.”が出力される、という理解でよしとします。

書き終わったら、”Esc”を押して"-- INSERT --"モードを終了します。
この状態で":"を押すと、オプションを受けつけるようになります。
例えば、

:wで保存、
:qでvimの終了、
:wqと組み合わせると保存して終了、です。

他にも色々ありますが、今はこれを把握すれば十分でしょう。

ちなみに作成したファイルは、次のコマンドで削除できます。

$ rm test.c

gccのインストール/コンパイル

C言語で書かれたソースファイルは、コンパイルして実行ファイルを生成する必要があります。
gccは、そのコンパイラの一つです。 マニュアルを読む1と、

~
NAME
       gcc - GNU project C and C++ compiler
~

CとC++のコンパイラであることがわかります。 ちなみにこのgccマニュアルは、様々な拡張子の解説なども載っていて、なかなか面白いものです。

vimと同じように、まずはインストールします。

$ sudo apt install gcc

インストールが完了したら、さっそく先程作成したtest.cをコンパイルします。

$ gcc test.c -o test

test.cをコンパイルし、testという実行ファイルを作成する、というコマンドです。

これでコンパイルは完了です。

ファイルの実行

ファイルを実行するには、実行ファイルのディレクトリをターミナルに打ち込みます。

$ ./test
Hello, Lain.

記念すべきはじめての文字列が表示されました。

ちなみに今回のtestファイルでは意味がありませんが、実行時に引数を与えることで、

$ ./test arg

testの実行時に引数argを渡して実行させることができます。

パッケージのアンインストール

最後に、今回インストールしたパッケージをアンインストールする方法も記しておきます。

インストール時に使用したaptコマンドのマニュアルを読みます。

~
           Removing a package removes all packaged data, but leaves usually small
           (modified) user configuration files behind, in case the remove was an
           accident. Just issuing an installation request for the accidentally removed
           package will restore its function as before in that case. On the other hand
           you can get rid of these leftovers by calling purge even on already removed
           packages. Note that this does not affect any data or configuration stored in
           your home directory.
~

removeはユーザーの設定ファイルを残してアンインストールするのに対し、purgeはすべてのファイルをアンインストールするようです。
使い方はそれぞれ次の通り:

$ sudo apt remove vim
$ sudo apt purge vim

おわりに

C言語でプログラミングするための簡単な環境構築、実行する手順を記録しました。

どうやってプログラミングするのか、という情報はたくさん目にしますが、どうやってプログラミングされているのか、という話題ははあまり見かけません。

面白そうなリソースはたくさんあります。 これらも参考にしながら、仕組みの理解を深めていきたいと思います。

[関連記事]

www.bioerrorlog.work

www.bioerrorlog.work

参考

Binary Exploitation / Memory Corruption by LiveOverflow - YouTube

manコマンドの基本的な使い方を理解する | Linuxコマンド - 生物系がゼロから始めるTech Blog


  1. マニュアルの読み方は、過去記事にまとめました。