Loose-Info.com

Last Update 2020/09/10


TOP - 各種テスト - gcc - ファイル名の拡張子によるコンパイラの動作 - その他

ファイル名の拡張子が特定言語拡張子以外であるときのコンパイラの動作

実行環境
GCC-8.2.0
GNU C Library 2.28

・実行例中の太字表記部分は、コマンドなどの入力された文字列を示します。
・「」や「...」の着色省略表記は、 実際のソースコードや出力内容などを省略加工した部分を示します。

使用ファイル

sample.c
/* その他の拡張子の場合の動作確認用ソースファイル */ #include <stdio.h> int main(void) { printf("その他の拡張子の場合の動作確認用ソースファイル\n"); return 0; }

その1

ファイル名の拡張子が「.o」である場合の結果

テスト用オブジェクトファイルの生成
$ ls -l total 4 -rw-r--r-- 1 ****** ******** 220 *** ** **:** sample.c $ gcc -c sample.c $ ls -l total 8 -rw-r--r-- 1 ****** ******** 220 *** ** **:** sample.c -rw-r--r-- 1 ****** ******** 1528 *** ** **:** sample.o <--- 生成されたオブジェクトファイル $

拡張子が「.o」であるファイルのコンパイル
$ gcc sample.o $ ls -l total 28 -rwxr-xr-x 1 ****** ******** 18328 *** ** **:** a.out <--- 生成された実行ファイル -rw-r--r-- 1 ****** ******** 220 *** ** **:** sample.c -rw-r--r-- 1 ****** ******** 1528 *** ** **:** sample.o $ ./a.out その他の拡張子の場合の動作確認用ソースファイル $

その2

ファイル名の拡張子が「.aaa」である場合の結果

上記の「その1」実行後の状態から、
$ rm -v a.out <--- 実行ファイルを削除 removed 'a.out' $ cp -v sample.o sample.aaa <--- オブジェクトファイルを拡張子を変更してコピー 'sample.o' -> 'sample.aaa' $ gcc sample.aaa $ ls -l total 32 -rwxr-xr-x 1 ****** ******** 18328 *** ** **:** a.out <--- 生成された実行ファイル -rw-r--r-- 1 ****** ******** 1528 *** ** **:** sample.aaa -rw-r--r-- 1 ****** ******** 220 *** ** **:** sample.c -rw-r--r-- 1 ****** ******** 1528 *** ** **:** sample.o $ ./a.out その他の拡張子の場合の動作確認用ソースファイル $

その3

ファイル名の拡張子が「.bbb」で、C言語のソースファイルである場合

上記の「その2」実行後の状態から、
$ rm -v a.out removed 'a.out' $ cp -v sample.c sample.bbb <--- C言語ソースファイルを拡張子「.bbb」としてコピー 'sample.c' -> 'sample.bbb' $ gcc sample.bbb sample.bbb: file not recognized: file format not recognized collect2: error: ld returned 1 exit status <--- オブジェクトファイルではないためファイル形式に関するエラー $