Wir haben einen Legacy-Linker, der libc5 verwendet, und aufgrund mehrerer Faktoren haben wir nur die Binärdatei und nicht die Quelle. Ja, die Versionskontrolle hätte uns von unserem aktuellen Problem gerettet ... das jetzt für unsere gesamte Werkzeugkette und Produktlinie verwendet wird, aber dieses spezielle Pferd ist schon lange weg.Legacy-Linker (uses libc5) schlägt auf Linux-Kernel 2.6.25
Dieser Linker arbeitet auf Linux-Kernel 2.6.24, aber auf 2.6.25 (und 2.6.26) es scheitert mit der Meldung
Virtual memory exceeded in `new'
Wir sind mit dem entsprechenden Legacy-Compiler hatten ein ähnliches Problem, aber mit einige stackoverflow.com answers und viel Forschung haben entdeckt, dass das Compiler-Problem durch die "brk randomization" in Linux Kernel 2.6.25 verursacht wurde. Die Abhilfe für das ist ein sysctl Vars zu setzen und eine Umgebung var:
/proc/sys/kernel/randomize_va_space = 0 or 1 setenv MALLOC_TOP_PAD_ 536870912
Dies ist jedoch nicht die Linker helfen.
Ich habe aus mit „ldd“ festgestellt, dass der Linker mehr gemeinsam genutzte Bibliothek Abhängigkeiten hat (der Compiler hatte nur die libc.so.5):
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)
Und ich habe gelesen, dass ich muß möglicherweise installieren die libc5-Version von libg ++. so.27. Ich zögere, das zu tun, da ich nicht weiß, ob das die neueste libg ++ .so.27 überschreibt und Probleme für nicht-libc5-Anwendungen verursacht.
Also, finde und installiere ich die libc5 Version von libg ++. So.27, oder gibt es eine bessere Möglichkeit die randomisierung von brk zu deaktivieren, oder gibt es einen anderen Unterschied zwischen Kernel 2.6.24 und 2.6.25 der das verursacht Linkerproblem?
bearbeiten
Siehe this für alle Details dieser Suche, und meine endgültige Auflösung.
Welche Plattform ist das, ich weiß, es gab Änderungen in der 64-Bit-Speicher-Management-Code, der Libc auf x86-64/AMD64 vor einer Weile zurück ... – ewanm89
Der Linker/Loader läuft auf meinem Desktop-PC (32 Bit), Das läuft Linux Kernel 2.6.26 (es ist eine stabile debian Installation). Der Linker erzeugt Code für einen eingebetteten Prozessor mit einer 32-Bit-RISC-CPU. – JimKleck