問題タブ [otool]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
94 参照

macos - Brew経由でインストールせずに「psql」を使用するにはどうすればよいですか

psqlbrew などを介して postgress をインストールせずに、ユーティリティをスタンドアロンで使用したい(理由があります)。PostgressApp で配布された OS X で psql バージョン 9.5.3 を使用しています。

psql のみを配布すると、次のエラーが表示されます。

コマンドotool -L psqlを使用すると、ライブラリへのパスがまだ Posgres.app を指していることがわかったので、install_name_toolツールでそれを変更し、参照されているすべてのライブラリをチェックして修正しました。

ただし、まだ同じエラー メッセージが表示されます。誰でもこれを修正する方法を知っていますか?

または、動作するスタンドアロンpsqlバイナリへの別のルートはありますか?

0 投票する
0 に答える
720 参照

macos - QtアプリからOSX用の.appバイナリをコマンドラインでビルドするには?

QtApp を OSX 用の .app にビルドするためのシェル スクリプトを準備しています。スクリプトで次のことを行います

そして、MyApp.app を取得します。ここまでスゴイ!しかし、ダブルクリックして開くと、次のエラーが表示されます。

You can’t open the application “MyApp.app” because it is not supported on this type of Mac.

この問題の周りを検索しようとしました。Qt からの次の公式リンクに記載されているように、 otool&に関連するスクリプトにさらにコード行を追加する必要があるようです: http://doc.qt.io/qt-5/osx-deployment.html#macdeployinstall_name_tool

最終的な.appを取得するためにQtの下でどのツールと何が機能するかについての公正な説明ですが、スクリプトに正確に何を入れればよいかわかりません。ビルド後の osx マシン。

質問:
OSX 用の適切な MyApp.app を取得するために、macdeployqt コマンドの後にスクリプトに何を追加すればよいか教えてください。

ところで、MyAppでコマンドを実行otoolすると、次の出力が得られます。

0 投票する
1 に答える
1625 参照

xcode - アプリ バイナリが Xcode によって作成された後、フレームワークとフレームワークへのリンクを削除します。

Xcode で同じアプリの 2 つのバージョンをビルドしたいと思います。1 つは Sparkle フレームワークを使用し、もう 1 つは使用しません。別のターゲットを維持したくありません。代わりに、2 つの個別のビルド構成に依存する 2 つの個別のスキームを使用したいと考えています (1 つをデバッグ ビルド用に、もう 1 つをリリース ビルド用に使用するため、合計 4 つです)。

問題は、「ビルド フェーズ」の「バンドル リソースのコピー」と「バイナリのリンク」の手順が、特定のターゲットのすべてのスキームで同じであることです。

したがって、私の唯一のオプションは、ビルド後 (および署名前) に次のようなスクリプトを実行することです。

  1. アプリ バンドルからフレームワークを削除します。
  2. 実行可能ファイルからフレームワークをリンク解除します ( にリストされていますottol -L)。

助言がありますか?

0 投票する
1 に答える
784 参照

macos - macOS での動的リンク: ImageIO.framework は間違ったパスから見えますか?

開発マシンを再起動した後、Rust プロジェクトが macOS で実行されなくなりました。エラーメッセージは次のとおりです。

何が変化し、これを引き起こしたのか、私にはまったくわかりません。問題は、コードではなく私のリグにあるようです。これは、Docker コンテナーで正常に動作し、古いコミットがコンピューターでの実行を拒否しているためです。もう 1 つのことは、私のプロジェクトでは画像処理ライブラリを使用してはならないということです。(そして、macOS で推移的な動的依存関係を一覧表示して、実際にそうであるかどうかを確認する方法がわかりません。)

otool -L /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIOImageIOにリンクしていることがわかります/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJPEG.dylib (compatibility version 1.0.0, current version 1.0.0)。そのファイルは確かに存在します。/usr/local/lib/libjpeg.dylib(私のFSは大文字と小文字を区別しません)も存在しますが、それは自作ファイルへのシンボリックリンクである../Cellar/jpeg/8d/lib/libjpeg.dylibため、明らかにシステムライブラリはそれを使用すべきではありません. ただし、私がLD_LIBRARY_PATH知る限り、macOSに/usr/local/libdylib検索パスとして使用するように強制する必要がある環境変数を設定したり、他の環境変数を設定したりしていません。

だから私の質問は:

1) macOS に、プロジェクト内のどのライブラリが (おそらく推移的に) にリンクされているかを確認するツールはありImageIO.frameworkますか?

2) macOS で dylib 検索パスはどのように構成されていますか? どのパスが検索され、どの優先順位で検索されるかを確認するツールはありますか? 問題自体は Homebrew の問題に起因する可能性がありますが、それを診断して理解するためのツールが必要です。

0 投票する
1 に答える
110 参照

c++ - otool を使用したリファクタリングされたコードでのバイナリ比較

C++ コードをリファクタリングし、文字列やベクターなどを削除using namespace std;および追加std::しています。出力をバイナリ単位で同一にしたいのですが、cmp最小限の変更でも差分が得られます。を使用して逆アセンブルに頼りましたotoolが、アドレスに奇妙なオフセットが発生しています。

たとえば、この変更で

otool -XVt奇数アドレスオフセットを与える:

文字通り、すべての加算値を +/-0x10 にシフトします。これを防ぐ方法はありますか?そもそもなぜそれが起こっているのですか?

上記の変更を元に戻し、再コンパイルすると元のアドレスが得られるため、アドレス選択の「ランダム性」の問題ではないでしょう。

0 投票する
1 に答える
116 参照

ios - アプリが拒否された後の nm 出力の解釈

どういうわけか私のアプリはプライベート API を使用しているため、私のアプリは Apple によって拒否されました。Apple によると、私のアプリは

フレームワーク: '/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation': CFHashBytes

コードに何も見つからなかったので、stackoverflow を検索し、otool または文字列を使用できることを知りました。

文字列を使用して、2 つの「ハッシュ」呼び出しを (どこにでも) 見つけ、nm を使用すると、次の出力が得られます。

nm Sporty\ アーキテクト | grep ハッシュ

0000000100077490 T __TFO16Sporty_Architect12ActivityTypeg9hashValueSi 0000000100056240 T __TFO16Sporty_Architect12RotationModeg9hashValueSi 0000000100064480 T __TFO16Sporty_Architect13DraggedSliderg9hashValueSi 000000010003e3a0 T __TFO16Sporty_Architect8FileTypeg9hashValueSi 000000010003d91​​0 T __TFO16Sporty_Architect9DateRangeg9hashValueSi 0000000100021360 T __TFO16Sporty_Architect9ModelModeg9hashValueSi U __TFSig9hashValueSi 00000001000777b0 T __TTWO16Sporty_Architect12ActivityTypes8HashableS_FS1_g9hashValueSi 00000001000562e0 T __TTWO16Sporty_Architect12RotationModes8HashableS_FS1_g9hashValueSi 0000000100064500 T __TTWO16Sporty_Architect13DraggedSliders8HashableS_FS1_g9hashValueSi 000000010003e9d0 T __TTWO16Sporty_Architect8FileTypes8HashableS_FS1_g9hashValueSi 000000010003e080 T__TTWO16Sporty_Architect9DateRanges8HashableS_FS1_g9hashValueSi 0000000100021500 T __TTWO16Sporty_Architect9ModelModes8HashableS_FS1_g9hashValueSi

U __TFSig9hashValueSi だと思いますね。しかし、ここで質問です...どうすればこれをさらに絞り込むことができますか?

Apple がすべてが問題ないことを示す検証ボタンを提供し、アプリがレビューされると、コンパイル時 (または少なくとも送信時) に明らかに検出される可能性のある何かのために拒否される理由は、私には理解できません。