或阿呆のブログ

Pythonを好んで使っているプログラマです。Ruby,Perl,PowerShell,VBAなどでもたまに書いています。最近はスロット放浪記やってます。。

C言語の基本の基本〜Hello,World!を出力する。

C言語コンパイラ型言語であるため、ソースコードコンパイルし、実行形式のファイルを生成して実行する。という記載は、プログラミングをはじめて簡単な書籍を読めば誰でもわかる。

もうちょっと細かい話をする。

hello.c というソースファイルがあるとする。moreコマンドで表示する。

ソースコード

$more hello.c 
#include <stdio.h>
int main(void)
{
	printf("Hello,World!\n");
}

ソースコードコンパイル

gccでオプション無しでコンパイルする。エラーが出ていなければ正常終了している。

$gcc hello.c 

実行形式のファイルを確認

lsコマンドで見てみる。hello.cをコンパイルするとa.outというファイルが出来上がる。

$ls
a.out  hello.c

実行形式というくらいなので権限を見てみる。

$ls -l
total 12
-rwxr-xr-x 1 tom tom 7365  19 23:21 a.out
-rw-r--r-- 1 tom tom   65  19 23:09 hello.c

xが実行実行権限を意味する。a.outには実行権限が付いている。

じゃぁ、a.outとは何者?と気になったら、fileコマンドでファイルの種類を見てやればいい。

$file a.out 
a.out: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0x9ad2390f028730f61926bc8823d8022e53ef5d10, not stripped

ELFっていう実行形式のファイルだということがわかる。ELFについては、話すと長くなるので、
google:ELF
で調べてみることをお勧めする。

実行ファイルを実行

実行パスとかの問題もあるので、ファイル名だけだとそんなコマンド無いよと怒られる。その場合、./を先頭につけてやる。

$./a.out
Hello,World!

問題無く出力されている。