У нас есть устаревший компоновщик, который использует libc5, и из-за нескольких факторов у нас есть только двоичный файл, а не источник. Да, контроль версий спас нас от нашей текущей проблемы ..., которая теперь используется для нашей полной цепочки инструментов и линейки продуктов, но эта конкретная лошадь давно ушла.устаревший компоновщик (использует libc5) терпит неудачу в ядре linux 2.6.25
Этот компоновщик работает на Linux ядро 2.6.24, но на 2.6.25 (и 2.6.26) он терпит неудачу с сообщением
Virtual memory exceeded in `new'
У нас была аналогичная проблема с соответствующим унаследованной компилятором, но с некоторые stackoverflow.com answers и многие исследования обнаружили, что проблема с компилятором была вызвана «рандомизацией брк» в Linux 2.6.25. Обходной путь для этого является установка SYSCTL ВАР и вар среды:
/proc/sys/kernel/randomize_va_space = 0 or 1 setenv MALLOC_TOP_PAD_ 536870912
Это, однако, не помогает линкера.
я нашел с помощью «LDD», что линкер имеет более общий библиотечных зависимостей (компилятор только имел 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)
И я прочитал, что я, возможно, придется установить libc5 версия libg ++. so.27. Я не хочу этого делать, потому что я не знаю, заменит ли это последний libg ++. So.27 и вызовет проблемы для приложений, отличных от libc5.
Итак, я могу найти и установить libc5 версию libg ++. So.27, или есть какой-то лучший способ отключить рандомизацию БРК, или есть другое различие между ядром 2.6.24 и 2.6.25, которое вызывает проблема линкера?
Редактировать
См this для всех деталей этого поиска, и мое окончательное решение.
что это за платформа, я знаю, что в 64-битном коде управления памятью произошли изменения, которые немного ускорили libc на x86-64/amd64 ... – ewanm89
Линкеровщик/загрузчик работает на моем настольном ПК (32 бит) который запускает linux kernel 2.6.26 (это стабильная установка debian). Компилятор создает код для встроенного процессора с 32-битным RISC-процессором. – JimKleck