問題タブ [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.

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

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 を実行しています。

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

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

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

angularjs - ディレクティブがテンプレートの代わりに templateUrl を使用する場合、Angular prelink は呼び出されません

angular.js の compileTemplateUrl 関数で。'controller: null' の derivedSyncDirective により、その要素のコントローラー関数が保存されません。そのため、nodeLinkFn(そのプレリンク部分)で呼び出された getControllers は例外をスローするため、プレリンクは呼び出されません。http://plnkr.co/edit/yMcurPowZmxCOv0luE5sを参照してください 。ここで「コントローラー: null」の理由がわかりません。誰もそれを知っていますか?

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

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 がある場合はどうなりますか。リンク関数が呼び出されているときに子チェックボックスが使用できないのはなぜですか? ご協力ありがとうございました!!!

0 投票する
4 に答える
988 参照

visual-studio - Visual Studio 内のプレリンク ステップで呼び出された .cmd スクリプトでのビルドまたはリビルドであるかどうかを判断します。

.cmdVisual Studio (それぞれ 2005、2008、2010、2012、および 2013) プロジェクトのリンク前ステージ内からスクリプトを実行して、これが完全なリビルド ( Build.RebuildSolution/ Build.RebuildOnlyProject) か "通常の" ビルド ( Build.BuildSolution/ ) かを判断するにはどうすればよいBuild.BuildOnlyProjectですか?

これは外部スクリプト (知っておく必要がある場合は LuaJIT) であり、プロジェクトのビルドごとにライブラリを再構築したくありません。代わりに、完全な再構築を、まさにそのオプションを選択した状況に限定したいと思います。

0 投票する
2 に答える
996 参照

linux - プレリンクは相対的な再配置にのみ影響します

組み込み ARM デバイスに Qt を使用する大規模な C++ 実行可能ファイルを事前リンクするために、クロス プレリンクを使用しています。Yocto を使用しているのではなく、カスタム ディストリビューションを使用していることに注意してください。そのため、現時点では手動で prelink を実行しています。

prelink の出力を見ると、うまくいっているようです:

ライブラリがロードされると、少なくとも libQt5Qml.so と libproductcommon.so が prelink によって設定された優先ロード アドレスにロードされるように見えます。

さて、私は移転の数がいくらか減少することを期待していました:

これは、プレリンクによって相対的な 再配置のみが減少したことを示していますが、通常の再配置 (おそらくシンボル ルックアップが必要) は減少していません。他の移転はおそらくより高価なものであるため、私は特に他の移転を減らすことに興味があります.

今私の質問:

  1. プレリンクは通常の再配置を減らすことさえできますか? LWNの記事では、プレリンク後の通常の再配置が 0 であることを示しているので、それは可能であると思います。
  2. 非相対的な再配置が事前にリンクされないようにするには、何が間違っている可能性がありますか? どこからデバッグを開始すればよいですか?
0 投票する
0 に答える
254 参照

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 セクションがありません

誰かがこれを解決するのを手伝ってくれますか?