Исправление libc.so.6 неожиданного перемещения типа 0x25
Я пытаюсь установить gcc4.9 на систему SUSE без подключения к интернету. Я скомпилировал gcc на машине с Ubuntu и установил его в префикс, затем скопировал папку префикса на машину SUSE. Когда я попытался запустить его, gcc пожаловался на то, что не нашел GLIBC_2_14, поэтому я скачал rpm для libc6 онлайн и включил его в папки с префиксами. мой LD_LIBRARY_PATH
включает префикс /lib и префикс /lib64. Когда я пытаюсь запустить любую программу сейчас (ls
, cp
, cat
и т.д.) я получаю ошибку error while loading shared libraries: /home/***/prefix/lib64/libc.so.6: unexpected reloc type 0x25
,
Можно ли как-то исправить это, чтобы я мог запустить и запустить gcc4.9 в этой системе?
В качестве альтернативы, возможно ли построить gcc статически, чтобы мне вообще не пришлось беспокоиться о связывании при передаче его между компьютерами?
1 ответ
мой LD_LIBRARY_PATH включает префикс /lib и префикс /lib64
Посмотрите этот ответ для объяснения, почему это не может работать.
Можно ли как-то исправить это, чтобы я мог запустить и запустить gcc4.9 в этой системе?
Лучше всего установить пакет GCC, поставляемый с системой SuSE, а затем использовать этот GCC для настройки и установки на нем gcc-4.9.
Если по какой-то причине вы не можете этого сделать, в этом ответе есть несколько способов, которыми вы можете собрать gcc-4.9 в более новой системе и по-прежнему работать в более старой.
Можно ли построить gcc статически, чтобы мне вообще не пришлось беспокоиться о связывании при передаче его между компьютерами?
Вопреки распространенному мнению, полностью статичные двоичные файлы обычно менее переносимы, чем динамические в Linux.