libc5を使用する従来のリンカがあります。いくつかの要因により、バイナリのみがありソースはありません。はい、バージョンコントロールによって、私たちの現在の問題から私たちを救うことができました。これは現在、完全なツールチェーンと製品ラインで使用されていますが、この特定の馬は長く去っています。linux kernel 2.6.25で従来のリンカ(libc5を使用)が失敗する
このリンカーは、Linuxカーネル2.6.24では動作するのですが、2.6.25(および2.6.26)で、それは我々が対応する従来のコンパイラで同様の問題があったが、とのメッセージ
Virtual memory exceeded in `new'
で失敗しますいくつかのstackoverflow.com answersと多くの研究では、コンパイラの問題は、Linuxカーネル2.6.25で "brkのランダム化"によって引き起こされたことが判明しました。これを回避するには、sysctl varsと環境変数を設定することです。var:
/proc/sys/kernel/randomize_va_space = 0 or 1 setenv MALLOC_TOP_PAD_ 536870912
これはリンカーには役立ちません。
私は、リンカは複数の共有ライブラリの依存関係(コンパイラが唯一のlibC.so.5を持っていた)があることを「LDD」を使用してから発見した:
libg++.so.27 => /usr/lib/libg++.so.27 (0xb7eca000) libstdc++.so.27 => /usr/lib/libstdc++.so.27 (0xb7e99000) libm.so.5 => /lib/libm.so.5 (0xb7e90000) libc.so.5 => /lib/libc.so.5 (0xb7dd3000)
をそして私は私がインストールする必要がありますことを読んだことがありますlibg ++。so.27のlibc5バージョン。私はそれが最新のlibg ++。so.27をオーバーライドするかどうか分からず、libc5以外のアプリケーションに問題を引き起こすので、私はそれをするのをためらっています。
libg ++。so.27のlibc5バージョンを見つけてインストールするか、またはbrkランダム化を無効にするより良い方法がありますか、またはカーネル2.6.24と2.6.25の間に別の違いがありますリンカーの問題?
編集
この検索のすべての詳細についてthisを参照してください、そして私の最終的な解決。
私は、x86-64/amd64でlibcを有効にした64ビットメモリ管理コードに変更があったことを知っています。 – ewanm89
リンカ/ローダはデスクトップPC(32ビット)で動作しますが、これはLinuxカーネル2.6.26を実行しています(これはDebian安定版インストールです)。リンカは、32ビットRISC CPUを備えた埋め込みプロセッサ用のコードを生成します。 – JimKleck