はじめてのC言語 | Linux環境構築 - vim

はじめてLinuxでC言語の初歩的なプログラミングをやったので、手順のノートを残します。

UbuntuにはもともとC言語が入っているので、 vimとgccをインストールすれば、
vimでテキストの作成、
gccでコンパイル、
ディレクトリの指定で実行、という手順で一連のプログラミングができるようになりました。



Introduction

Linuxを入れたばかり1だと、そもそもテキストファイルをどうやって作成するのか、どうやってプログラミングをすればよいのか、いまいちわかりません。

もちろん、Linuxでも好みのエディタを導入してプログラミングできると思いますが、今回はターミナルで完結する簡単な環境構築手順を記録します。


Results

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

これで先ほど作成したtest.cファイルが削除されました。

gccでコンパイルする

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

~
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を渡して実行させることができます。

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

今回、vimやgccをインストールしましたが、このパッケージをアンインストールする方法を記しておきます。

インストール時に使用した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


Discussion

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

ここ最近はターミナル上のコマンドを使っていろいろと遊んでいましたが、いよいよプログラミング関係もやっていきたいと思っています。

気になるのは、やはりコンパイル後の実行ファイルに何が書かれているのか、という類のことです。

どうやってプログラミングするのか、という情報はたくさん目にしますが、どうやってプログラミングされているのか、という情報はあまり御目にかかれません。
LiveOverflow氏のバイナリハッキング動画3などを参考にしながら、そういう方向の理解を進めていきたいと思います。