web-dev-qa-db-ja.com

g ++出力:ファイルが認識されません:ファイル形式が認識されません

複数のファイルを含むプログラムを初めて作成しようとしています。 main.cppのみでプログラムをコンパイルしても問題はありませんでした。次のコマンドでは、これが結果です。

$ g++ -c src/CNumber.cpp src/CNumber.h -o src/CNumber.o
$ g++ -c src/CExprPart.cpp src/CExprPart.h -o src/CExprPart.o
$ g++ -c src/CExpr.cpp src/CExpr.h -o src/CExpr.o
$ g++ -c src/main.cpp -o src/main.o
$ g++ src/CNumber.o src/CExprPart.o src/CExpr.o src/main.o -o execprogram
src/CNumber.o: file not recognized: File format not recognized
collect2: error: ld returned 1 exit status

このようなエラーの原因は何ですか?また、どうすればよいですか? gccでLinux Mintを使用する(Ubuntu/Linaro 4.7.2-2ubuntu1)。ありがとうございました

23
RuinerCZ

これは間違っています:

 g++ -c src/CNumber.cpp src/CNumber.h -o src/CNumber.o

.hファイルを「コンパイル」しないでください。これを行うと、プリコンパイル済みヘッダーファイルが作成されますが、実行可能ファイルの作成には使用されません。上記は単純に

 g++ -c src/CNumber.cpp -o src/CNumber.o

他の.cppファイルのコンパイルでも同様

25
nos

ソースファイルを.oファイルにコンパイルしているときに以前のビルドが失敗したことが原因であることが判明したため、何かをビルドするときにこのエラーに遭遇しました。そのファイルに。

解決策は、.oファイルを削除するだけでした(またはmake clean、そのターゲットのメイクファイルがある場合)。

(これは元の投稿の問題とはあまり関係がありませんが、これはエラーのGoogle検索の最初のヒットの1つであったため、ここに追加するだけです)。

26
Brian Burns