libstdc++.so.6: не может обрабатывать данные TLS

У меня есть приложение, скомпилированное по адресу:

  • gcc версии 4.1.2 20061115 (предварительная версия) (Debian 4.1.1-21)
  • Linux debian 2.6.18-5-686 #1 SMP Пт 1 июня 00:47:00 UTC 2007 i686 GNU/Linux

и работает хорошо.

Теперь я хочу запустить его по адресу:

  • Linux 2.4.20_mvlcge31-tomas #7, четверг, 7 мая, 11:33:21 CEST 2009 i686 неизвестно

Я получил следующие ошибки:

libstdc++.so.6: не может обрабатывать данные TLS

В Интернете я увидел, что кто-то предложил сделать это: export LD_ASSUME_KERNEL=2.2.5

Я пытался, но получаю еще больше ошибок: ls: ошибка при загрузке общих библиотек: librt.so.1: невозможно открыть общий объектный файл: нет такого файла или каталога

Кто может помочь мне с этим? Благодарность


person Isaac LI    schedule 12.08.2010    source источник


Ответы (1)


Вы скомпилировали приложение с гораздо более новой версией libc и ядром. Вы не можете скомпилировать программу на 2.6 с новейшей libc и ожидать, что она будет работать на старом ядре.

Кроме того, где вы на самом деле все еще используете Linux 2.4?

person Artyom    schedule 12.08.2010
comment
Артем: спасибо за ответ! Значит ли это, что если я хочу, чтобы программа работала, ее нужно перекомпилировать на старом ядре 2.4, без каких-либо других альтернативных простых вариантов? - person Isaac LI; 12.08.2010
comment
@Isaac LI, вам, вероятно, понадобится старый компилятор и старая libstdc++/libc и попытаться скомпилировать их, но ... я никогда не делал таких вещей, поэтому я не уверен, что это сработает, и сколько усилий вам нужно приложить внутрь. Я думаю, что было бы намного проще установить дистрибутив Linux 2.4. в ВМ и компилировать там. - person Artyom; 12.08.2010