2017-05-08 17 views
0

私がやろうとしているのは、オブジェクトファイルからC++ファイルを作成することですが、その方法を理解することはできません。makefileを使って.oオブジェクトファイルからC++ファイルを作成できますか?

INCLUDEDIR = ../headers 
CXXFLAGS = -std=c++11 -I $(INCLUDEDIR) -Wall -Wfatal-errors -O2 

all:primeFactors.o 

primeFactors.o: primeFactors.cpp $(INCLUDEDIR)/primeFactors.h 
    g++ $(CXXFLAGS) -c $< -o [email protected] 

私はこれを構築しようとした際、私は取得

私は理解しますが、私はそれから言われますprimeFactor.cpp引数を取り出したときにすべきものは何もありません

make: *** No rule to make target 'primeFactors.cpp', needed by 'primeFactors.o'. Stop.

makeファイルで行われます。これを行う方法はありますか?

+2

なぜそれはまったく可能だと思いますか? –

+4

このhttps://reverseengineering.stackexchange.com/専用のネットワークがあります。オブジェクトファイルをコンパイルして魔法のようにcppファイルを取り出すのは簡単ではありません。 –

+1

これは[ディスアセンブラ](https://en.wikibooks.org/wiki/X86_Disassembly/Disassemblers_and_Decompilers)と呼ばれています。私はあなたが適切なコードを盗もうとしていない限り、あなたがしたいことではない賭けに喜んでいます。 – kabanus

答えて

0

一般的に、いいえ、あなたはそれをすることはできません。オブジェクトファイル(.oファイル)は、コンパイラのフロントエンド(言語の解析用)、オプティマイザ(実行速度を上げるため)、コンパイラのバックエンド(実行するコードを生成するためのコード)あなたのCPU)。 このプロセスはではなく、可逆です。コンパイルされたコードからソースに戻ることはできません。

0

メイクファイルを使用して.oオブジェクトファイルからC++ファイルを作成できますか?

makefileは、それを実行するための基礎となるツールがある場合にのみ行うことができます。メイクファイルを使ってジョブを実行するmakeには、それを引き出すための組み込みのメカニズムがありません。

makefileには、建築の規則がprimeFactors.oです。

primeFactors.o: primeFactors.cpp $(INCLUDEDIR)/primeFactors.h 

それはprimeFactors.cpp$(INCLUDEDIR)/primeFactors.hprimeFactors.oを構築するために必要であることを述べています。これらのファイルがない場合、またはビルドするルールがない場合、makeprimeFactors.oをビルドする方法がありません。

+0

メイクファイルを正しく作成したとは思わないので、 'primeFactors.o'ではなく' primeFactors.cpp'をビルドしたかったのです。これを実行するにはどうすればよいでしょうか? – Peter

+0

@ Peter。通常、.cppファイルはテキストエディタを使用してユーザーが作成します。私はあなたが何を達成しようとしているのか分かりません。 –

+0

'primeFactors.o'をcppファイルにリバースエンジニアリングするのは当初考えていたよりも複雑に思えます。 – Peter

関連する問題