Исправление 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.

Другие вопросы по тегам