Loose-Info.com
Last Update 2022/11/28
TOP - 各種テスト - gcc - ファイル名の拡張子によるコンパイラの動作 - その他

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

テスト概要

その1
ファイル名の拡張子が「.o」であるオブジェクトファイルを引数としてgccを実行
PASS 実行ファイル生成

その2
ファイル名の拡張子が「.aaa」であるオブジェクトファイルを引数としてgccを実行
PASS 実行ファイル生成

その3
ファイル名の拡張子が「.bbb」であるC言語のソースファイルを引数としてgccを実行
FAIL オブジェクトファイルではないためファイル形式に関するエラーが発生

実行環境

GCC-8.2.0
GNU C Library 2.28
GNU Binutils 2.31.1


コード例・出力内容中の表記

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

使用ファイル

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

その1

ファイル名の拡張子が「.o」であるオブジェクトファイルを引数としてgccを実行

テスト用オブジェクトファイルの生成
$ 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を実行
$ gcc sample.o <--- 「.o」であるオブジェクトファイルを引数としてgccを実行 $ 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」であるオブジェクトファイルを引数としてgccを実行

上記の「その1」実行後の状態から、
$ rm -v a.out <--- 「その1」で生成された実行ファイルを削除 removed 'a.out' $ cp -v sample.o sample.aaa <--- オブジェクトファイルを拡張子を変更してコピー 'sample.o' -> 'sample.aaa' $ gcc sample.aaa <--- 「.aaa」であるオブジェクトファイルを引数としてgccを実行 $ 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 <--- 「.bbb」であるC言語のソースファイルを引数としてgccを実行 sample.bbb: file not recognized: file format not recognized collect2: error: ld returned 1 exit status <--- オブジェクトファイルではないためファイル形式に関するエラーが発生 $