Linux (Ubuntu) + vimでC言語を実行する環境構築をしたので、手順のノートを残します。
UbuntuにはもともとC言語が入っているため、以下の流れでC言語を実行できるようになりました。
- vimとgccのインストール
- vimでテキストの作成
- gccでコンパイル
- ディレクトリ指定で実行
はじめに
おはよう。@bioerrorlogです。
Linuxを入れたばかりだと、そもそもテキストファイルをどうやって作成するのか、どうやってプログラミングをすればよいのか、いまいちわかりません。
もちろん、Linuxでも好みのエディタを導入してプログラミングできると思いますが、今回はvimを用いた環境構築手順を記録します。
作業環境
Ubuntu18.04.1 LTS を
Windows10の上に、VMwareによって構築した仮想環境で起動しています。
www.bioerrorlog.work
LinuxではじめてのC言語を実行する
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ファイルが削除されました。
[関連記事] パスワード認証プログラムの作成 | リバースエンジニアリング入門#1
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を渡して実行させることができます。
[関連記事] Ubuntuディスプレイ解像度の変更 | 1920x1080
パッケージのアンインストール
今回、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
おわりに
C言語でプログラミングするための簡単な環境構築、実行する手順を記録しました。
ここ最近はターミナル上のコマンドを使っていろいろと遊んでいましたが、いよいよプログラミング関係もやっていきたいと思っています。
気になるのは、やはりコンパイル後の実行ファイルに何が書かれているのか、という類のことです。
どうやってプログラミングするのか、という情報はたくさん目にしますが、どうやってプログラミングされているのか、という情報はあまり御目にかかれません。
LiveOverflow氏のバイナリハッキング動画などを参考にしながら、そういう方向の理解を進めていきたいと思います。
参考
Binary Exploitation / Memory Corruption by LiveOverflow - YouTube