IN LINUX: 可能かどうかわかりません。私は100のソースファイルと100のそれぞれの実行可能ファイルを持っています。 実行可能ファイルを指定すると、それぞれのソースファイルを特定することが可能になります。実行ファイルからソースファイル名を見つける方法は?
答えて
私はあなたがこれを試すことができると思います。
readelf -s a.out | grep FILE
私は、あなたが上記のコマンドにいくつかのgrep
とsed
魔法を追加して、ソースファイル名を取得することができると思います。
strings executable | grep '\.c'
をしかし、ファイル名がまたは実行中にあってもなくてもよいと、彼らはよく、またはソースファイル名を表していない場合があります。ソースファイル名は、実行可能ファイルに存在している場合
これは単なるヒューリスティックです(@mouvicielの 'strings'はreadelfの次に優れたものです)。実行可能ファイルを簡単に削除または変更できます。 –
いいえ、1つのバイナリが正確に1つのソースファイルから来ると仮定しているため、非常に偽です。
ほとんどの実際のアプリケーションは、数千のファイルで構成されていますが、数千ものファイルで構成されています。
strippedバイナリ、またはdebugging informationでコンパイルされた(さらに良い)バイナリがある場合は、ファイルに情報が残っている可能性があります(またはデバッグ情報の場合)。ソースファイルの名前ですが、一般的に、それらを自分でビルドしない限り、バイナリはありません。
これらの100個の実行可能ファイルのすべてが単一のソースファイルから来ており、すべてのソースファイルを持ち、それらをすべてコンパイルできることを前提とすると、あなたの質問だけが理にかなっています。
あなたができることは、各ソースファイル内に"HERE!HERE!>>>" + __FILE__
のような文字列を宣言し、実行ファイルの中で "HERE!HERE!>>>"を検索し、それに続く文字列を解析するユーティリティを書くことです。 __FILE__
は、コンパイルされているソースファイルのフルパス名に展開されるプリプロセッサディレクティブです。
彼自身が実行ファイルをコンパイルすると、ちょっとしたデバッグ情報の追加が可能になります。 GCCオプション-g1 – datenwolf
、あなたがそれらを見つけることができます。あなたがプログラムが書き込まれていると仮定どんな拡張子に
変更.c
。
ヘルプのこの種のものの「馬が逃げた後に納屋のドアを閉める」親切に落ちるが、それは将来を助けるかもしれませんポスター。
これは古い問題です。 UNIXとLinuxは、Mark Rochkind(私が正しく覚えていれば)によって発明されたwhat
コマンドをサポートしています。このタイプの問題を正確に処理します。 1つのソースファイル - > 1つの展開可能な(またはオブジェクトファイル)種類のものに対して100%信頼できるだけです。他にも重要な用途があります。
char unique_id[] = "@(#)identification information";
@(#)
「が何文字列」と呼ばれ、実行可能イメージ内のソースをコンパイルすることにより、副生成物として生じません。コマンドラインからwhat
を使用してください。内部コードの使用は、おそらくこのようなものは(あなたが選択したので、答えとして一つだけのファイル名を取得すると仮定し、慎重にあなたのどのような文字列):
char *foo(char *whoami, size_t len_whoami)
{
char tmp[80]={0x0};
FILE *cmd;
sprintf(tmp, "/usr/bin/grep -F -l '%s' /path/to/*.c", unique_id);
cmd=popen(tmp, "r");
fgets(whoami, len_whoami, cmd);
pclose(cmd);
return whoami;
}
同じwhat
文字列でソースコードファイル名を返します。これは、あなたの実行可能ファイルから建った。言い換えれば、正確にあなたが尋ねたことは、私はあなたがwhat
文字列を聞いたことがないと確信しているので、あなたの現在のコードベースには存在しません。
- 1. 実行可能ファイル参照をプログラムで見つける方法
- 2. Pythonの行、col名からExcelの値を見つける方法は?
- 3. 実行中のテストの現在の名前を見つける方法は?
- 4. phpでテーブルからカラム名を見つける方法
- 5. 例外からリソース名を見つける方法
- 6. bashや他のスマートシェルが実行可能ファイルを見つける方法は?
- 7. Javaの都市名から国名を見つける方法は?
- 8. 実行時にマウスの位置を見つける方法は?
- 9. JavaScriptを使用してファイル名を見つける方法
- 10. Erlang - 実行時に現在の関数の名前を見つける方法
- 11. ディレクトリから最も古いファイルを見つける方法??? (PHP)
- 12. .pacファイルからプロキシサーバーとパスワードを見つける方法
- 13. 素早く配列から行を見つける方法
- 14. cshスクリプトが実行ファイルを見つけられない
- 15. ファイルをクリアケースで見つける方法
- 16. emacsclientが実行されるemacsデーモンを見つける方法
- 17. インストールされたソフトウェア名とアプリケーションパスを見つけたらVB.NET/C#exe名を見つける方法
- 18. そのパスからファイル名を見つけるシェルスクリプト
- 19. クエリ実行前にMySQlクエリタイプを見つける方法Zend framework
- 20. Cocoa App:実行中のプロセスを見つける方法
- 21. 実行時にコントロールを見つける正しい方法
- 22. メインの実行クラスのフルパスをプログラムで見つける方法
- 23. 実行中のJVMでクラスインスタンスを見つける方法
- 24. TFS:名前を変更して古いファイル名を見つける方法
- 25. Javaでそのメソッド内からメソッド名を見つける方法は?
- 26. 実行中のプロセスのメモリリークを見つける方法はありますか?
- 27. ファイルオブジェクトから現在のファイル名を見つける方法はありますか?
- 28. 現在の実行可能ファイル名はどのようにして見つけられますか?
- 29. JavaプログラムからWindows上のファイルのバージョンを見つける方法は?
- 30. Visual Studio Wp8.1でアプリケーションのパッケージ名を見つける方法は?
これらの100個の実行可能ファイルのすべてが1つのソースコードファイルから得られるという事実はありますか? –
いいえ、すべて100個のソースファイルからそれぞれです。 – Whoami
さて、あなたはあなたの質問を大きな時間に再定式化する必要があります。 –