問題タブ [prelink]
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.
linux - プリリンク エラー: レイアウト エラー: セクション サイズがデータに対して小さすぎます
Linux 2.6.35 を搭載した ARM システムで prelink を実行しています。私は Glibc 2.12.2 を使用しています。ライブラリとアプリケーションの実行可能ファイルを事前にリンクしたいと考えています。ただし、glibc に直接依存しているものはリンクできないようです。prelink を で実行しようとすると/lib
、次のエラーが発生します。
これを修正する方法、または prelink に存在するもの以外のすべてを prelink するように説得する方法はあります/lib
か? のブラックリスト機能については認識して/etc/prelink.conf
いますが、そのディレクトリにある依存関係が見つからないため、プレリンクでエラーが発生します。
編集:
これが私のprelink.confです
Freescale の i.MX51 プラットフォームを使用しています。ARM Cortex-8 です。開発キットに付属の GCC/G++ バージョンですべてをコンパイルしたので、ELF バイナリは 32 ビットであると想定しています。
編集:
-h フラグを -l に変更し、システム ライブラリをリストの先頭に移動しました。それでも同じエラーが発生します。
クロス ビルディング マシンではなく、デバイスで prelink を実行しています。
LD_LIBRARY_PATH には /lib と /usr/lib が含まれます
prelink を次のように実行してみました: prelink -a prelink -amR
どちらの方法でも同じ結果が得られました。
gcc 4.4.6 クロス コンパイラを実行しています。ld 1.12.1 ld を実行しています。
android - ELF Android システム ライブラリの .rel.dyn セクションの目的
特定の Android システム ライブラリのセクションを処理しようとして.rel.plt
いますが、関数のアドレスを簡単に見つけることができます。
.rel.dyn
ただし、セクションのエントリから何を作成すればよいかわかりません。このセクションには関数も含まれていますか? X86 ライブラリに存在する.got.plt
テーブルが ARM Android ライブラリにありません。それらも必要かどうかはわかりません。
Android リンカー コードは、システム ライブラリが事前にリンクされ、固定アドレスに読み込まれていることを示しています。.rel.plt
それがと.rel.dyn
セクションの処理にどのように影響しますか。
より広い範囲での質問は、Android ARM ベースのシステム ライブラリと、事前リンクの問題が追加されたセクションとセクションを理解する.rel.dyn
ことですrel.plt
。.got.plt
angularjs - ディレクティブがテンプレートの代わりに templateUrl を使用する場合、Angular prelink は呼び出されません
angular.js の compileTemplateUrl 関数で。'controller: null' の derivedSyncDirective により、その要素のコントローラー関数が保存されません。そのため、nodeLinkFn(そのプレリンク部分)で呼び出された getControllers は例外をスローするため、プレリンクは呼び出されません。http://plnkr.co/edit/yMcurPowZmxCOv0luE5sを参照してください 。ここで「コントローラー: null」の理由がわかりません。誰もそれを知っていますか?
javascript - リンク関数が呼び出された時点で要素が DOM にありませんか?
templateUrl と link プロパティを含む DDO を返すディレクティブがあります。私のtemplateUrlには、チェックボックス要素を含むdivにngRepeatディレクティブが含まれています。私のリンク関数では、すべての子チェックボックスを選択しようとしていますが、リンク関数が呼び出されたときに DOM に追加されません。選択を $timeout でラップすると、もちろんチェックボックスが選択されます。ドキュメントによると、角度は次の順序で関数を呼び出します。
mainDirective->compile->preLink -> firstChildDirective->compile->preLink -> lastChildDirective->compile->preLink->postLink -> firstChildDirective->postLink -> mainDirective->postLink。
リンクプロパティでDDOを返す場合、Angularのドキュメントによると、それはpostLinkとして呼び出されます。これは、私の意見では、すべての子チェックボックスがすでにDOMにあるはずですが、そうではありません。
angular コードを見ると、これはコンパイル関数があり、templateUrl がない場合に当てはまることがわかります。
また、link プロパティがあり、templateUrl ディレクティブ.compile がディレクティブ.link に割り当てられている場合。
templateUrl がない場合に addLinkFns(null, linkFn) がリンク関数を postLink にバインドすることは明らかですが、いくつかの子ディレクティブを含む templateUrl がある場合はどうなりますか。リンク関数が呼び出されているときに子チェックボックスが使用できないのはなぜですか? ご協力ありがとうございました!!!
visual-studio - Visual Studio 内のプレリンク ステップで呼び出された .cmd スクリプトでのビルドまたはリビルドであるかどうかを判断します。
.cmd
Visual Studio (それぞれ 2005、2008、2010、2012、および 2013) プロジェクトのリンク前ステージ内からスクリプトを実行して、これが完全なリビルド ( Build.RebuildSolution
/ Build.RebuildOnlyProject
) か "通常の" ビルド ( Build.BuildSolution
/ ) かを判断するにはどうすればよいBuild.BuildOnlyProject
ですか?
これは外部スクリプト (知っておく必要がある場合は LuaJIT) であり、プロジェクトのビルドごとにライブラリを再構築したくありません。代わりに、完全な再構築を、まさにそのオプションを選択した状況に限定したいと思います。
linux - プレリンクは相対的な再配置にのみ影響します
組み込み ARM デバイスに Qt を使用する大規模な C++ 実行可能ファイルを事前リンクするために、クロス プレリンクを使用しています。Yocto を使用しているのではなく、カスタム ディストリビューションを使用していることに注意してください。そのため、現時点では手動で prelink を実行しています。
prelink の出力を見ると、うまくいっているようです:
ライブラリがロードされると、少なくとも libQt5Qml.so と libproductcommon.so が prelink によって設定された優先ロード アドレスにロードされるように見えます。
さて、私は移転の数がいくらか減少することを期待していました:
これは、プレリンクによって相対的な 再配置のみが減少したことを示していますが、通常の再配置 (おそらくシンボル ルックアップが必要) は減少していません。他の移転はおそらくより高価なものであるため、私は特に他の移転を減らすことに興味があります.
今私の質問:
- プレリンクは通常の再配置を減らすことさえできますか? LWNの記事では、プレリンク後の通常の再配置が 0 であることを示しているので、それは可能であると思います。
- 非相対的な再配置が事前にリンクされないようにするには、何が間違っている可能性がありますか? どこからデバッグを開始すればよいですか?
python - プレリンク:.gnu.prelink_undo セクションがなく、ELF ファイルを開くことができません: pyintsller にエラーはありません
システムに次のバイナリがある LD_LIBRARY_PATH を使用した pyinstaller スクリプトがあります。
libldap_r-2.4.so.2
libpq.so.5
libpython2.7.so.1.0
次のようなコードを実行しています:
python pyinstaller.py my_script
プレリンク -u lib*
prelink の実行後、次のようなエラーが発生します。
プレリンク: ELF ファイルを開けません: エラーなし
prelink: libldap_r-2.4.so.2 には .gnu.prelink_undo セクションがありません
prelink: libpq.so.5 には .gnu.prelink_undo セクションがありません
prelink: libpython2.7.so.1.0 には .gnu.prelink_undo セクションがありません
誰かがこれを解決するのを手伝ってくれますか?