Linux 2.6.35 を搭載した ARM システムで prelink を実行しています。私は Glibc 2.12.2 を使用しています。ライブラリとアプリケーションの実行可能ファイルを事前にリンクしたいと考えています。ただし、glibc に直接依存しているものはリンクできないようです。prelink を で実行しようとすると/lib
、次のエラーが発生します。
Could not write /lib/libc-2.12.2.so: Layout error: section size too small for data
これを修正する方法、または prelink に存在するもの以外のすべてを prelink するように説得する方法はあります/lib
か? のブラックリスト機能については認識して/etc/prelink.conf
いますが、そのディレクトリにある依存関係が見つからないため、プレリンクでエラーが発生します。
編集:
これが私のprelink.confです
~ # cat /etc/prelink.conf -h /usr/local/Qt-4.7.4/lib -h /usr/lib -h /lib -h /usr/local/dbus/lib -h /usr/local/sqlite/lib -h /usr/local/ncurses/lib -h /usr/local/expat/lib -h /usr/local/ssl/lib
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 を実行しています。