Как исправить "/lib/tls/libc.so.6: версия` GLIBC_2.4 'не найдена "? - PullRequest
2 голосов
/ 28 мая 2009

Я скомпилировал двоичный файл и скопировал его на другой компьютер для выполнения. Но я получаю вышеуказанную ошибку. На второй машине я не могу установить новые библиотеки. Я попытался поместить libc с первого компьютера в каталог двоичного файла на втором компьютере, но компоновщик (как я обнаружил с помощью ldd) по-прежнему загружается со стандартного пути /lib/tls/libc.so.6). Пожалуйста, дайте мне знать, как это исправить.

Обновление:

Команда, используемая для компиляции / компоновки:

g ++ -O2 -DNDEBUG -o CountStrings -I ../../../../../ tbb / tbb20_20080408oss_src / include / ../src/CountStrings.cpp -L ../../../../../ Т / tbb20_20080408oss_src / строить / linux_ia32_gcc_cc4.3.2_libc2.8.90_kernel2.6.27_release / -ltbb

libtbb.so зависит от libc.so.6

Ответы [ 4 ]

2 голосов
/ 27 августа 2014

На самом деле самый простой способ решить эту проблему - обновить версию ОС .

Например, Java 1.7 не работает на RedHat 4, но хорошо работает на RedHat 5.

1 голос
/ 28 мая 2009

Попробуйте экспортировать LD_LIBRARY_PATH=<location_of_your_lib> для вашего процесса
например $ LD_LIBRARY_PATH=/home/kumar ./a.out
будет искать libs в /home/kumar/ раньше, чем где-либо еще

0 голосов
/ 29 мая 2009

Я не уверен, какие (плохие) побочные эффекты могут возникнуть при использовании другого libc, отличного от предоставленного системой, но вы можете попробовать принудительно использовать свою специальную копию libc с помощью LD_PRELOAD

LD_PRELOAD=<location_of_your_lib> <yourprogram>
0 голосов
/ 28 мая 2009

Вы проверили, есть ли статическая версия библиотеки на компиляторе? Если есть, то вы можете явно ссылаться на него, используя /lib/tls/libc.a вместо -L / lib / tls -lc (или как там у вас диалект).

...