Last Update 2022/11/28
ファイル名の拡張子が特定言語拡張子以外であるときのgccの動作
テスト概要
ファイル名の拡張子が「.o」であるオブジェクトファイルを引数としてgccを実行
PASS
実行ファイル生成
ファイル名の拡張子が「.aaa」であるオブジェクトファイルを引数としてgccを実行
PASS
実行ファイル生成
ファイル名の拡張子が「.bbb」であるC言語のソースファイルを引数としてgccを実行
FAIL
オブジェクトファイルではないためファイル形式に関するエラーが発生
実行環境
GCC-8.2.0
GNU C Library 2.28
GNU Binutils 2.31.1
GNU C Library 2.28
GNU Binutils 2.31.1
コード例・出力内容中の表記
・実行例中の太字表記部分は、コマンドなどの入力された文字列を示します。
・「︙」や「...」の着色省略表記は、 実際のソースコードや出力内容などを省略加工した部分を示します。
・「︙」や「...」の着色省略表記は、 実際のソースコードや出力内容などを省略加工した部分を示します。
使用ファイル
sample.c
/* その他の拡張子の場合の動作確認用ソースファイル */
#include <stdio.h>
int main(void)
{
printf("その他の拡張子の場合の動作確認用ソースファイル\n");
return 0;
}
ファイル名の拡張子が「.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
その他の拡張子の場合の動作確認用ソースファイル
$
ファイル名の拡張子が「.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
その他の拡張子の場合の動作確認用ソースファイル
$
ファイル名の拡張子が「.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 <--- オブジェクトファイルではないためファイル形式に関するエラーが発生
$