25

objcopy --redefine-symsオブジェクト ファイル (.o) 内のシンボルの名前を、Mac で binutils のツールに相当するものに変更したいと考えています。

いいえarm-apple-darwin10-objcopy。私は MacPorts のarm-elf-binutilsポートを試し、また少し遊んでみましたが、うまくotoolいきsegeditませんでした。

アイデアはありますか?

4

3 に答える 3

5

Agner Fog のobjconvの仕事のように聞こえます。

発表から:

これで、以前の投稿で説明したオブジェクト ファイル コンバーターで Mach-O ファイルを完全にサポートできるようになりました。不足している objcopy ユーティリティの代わりとして使用できます。

Objconv は、次の目的で使用できます。
オブジェクト ファイルとライブラリ/アーカイブ ファイルを、すべての x86 および x86-64 プラットフォームの Mach-O、ELF、COFF、および OMF フォーマット間で変換します。

オブジェクト ファイル内のシンボル名を変更し、シンボルを弱体化し、シンボルにエイリアス名を追加します。

プラットフォーム間 (Mac、Linux、BSD、Windows) でスタティック ライブラリ ファイル (*.a、*.lib) をビルド、変更、変換します。

オブジェクトファイルと実行ファイルをダンプする

オブジェクト ファイルと実行可能ファイルを逆アセンブルします。非常に優れた逆アセンブラー。

于 2011-06-20T06:27:56.983 に答える
3

この投稿を死からよみがえらせていることは知っていますが...

私も突然これを行う必要があり、それobjcopyが OSX で動作しないことを発見したのは少しショックでした。しかし、同じ効果を達成するために使用できると思います:ld

ld -r input.o -o output.o -alias oldsymbol newsymbol -unexported_symbol oldsymbol

これは、新しい名前でシンボルのエイリアスを作成し、古い名前を隠すだけです。

まだ多くのテストを行う機会はありませんが、出力ファイルを見るとnm、正しいことをしているように見えます.

于 2012-08-14T11:56:51.543 に答える
1

objconv は現在 ARM では機能しないため、このオプションは iPhone では使用できません。ただし、mac osx x86/x64 では、elf から mach-o まで objconv を使用しても問題ありません。ARMの解決策を見つけたら教えてください

于 2012-04-27T01:11:40.360 に答える