Linux за българи: Форуми

Linux секция за начинаещи => Настройка на програми => Темата е започната от: spec1 в Jan 20, 2008, 15:24



Титла: Version conflict
Публикувано от: spec1 в Jan 20, 2008, 15:24
Сигурно и на вас ви се е случвало да не можете да стартирате
някоя програма заради конфликт от типа:
 ....:  version 'GLIBC <versia>' not found (required by ....
  Разполагате само с изпълними файлове (нямате подръка
сорс-кода). Как може да се 'кракне' съотв.програма, за
да работи .


Титла: Version conflict
Публикувано от: triplek в Jan 20, 2008, 17:12
С какво дистро си??





Титла: Version conflict
Публикувано от: ivo1204 в Jan 20, 2008, 17:48
По принцип може , но със “С” библиотеките са свързани всички други , та нещата са заплетени.
Нека примерно твоята програма се казва  “my_program”.
Виж първо  какви  библиотеки ползва:
#ldd  my_program
..............................
libc.so.6 => /lib/libc.so.6
 libdl.so.2 => /lib/libdl.so.2  <-----------
...........................

Обаче ако дадем:
#  ldd  /lib/libdl.so.2
....................................
libc.so.6 => /lib/libc.so.6
................................
Вижда се , libdl.so.2 пак зависи от libc.so.6 .
(ld-linux -ХХХХ  не зависи от  libc.so.6 .....)

Така че , в никой случай не пипай  /lib/libc.so.6 !
Направи си друга директория , да кажем /opt/my/lib и там сложи други версии на  libc.so.6  и другите , който ти трябват.
#ldconfig -n  /opt/my/lib

След това експортирай променливата  “LD_LIBRARY_PATH” , та да хване тия библиотеки и трябва да стартираш така:

#export  LD_LIBRARY_PATH=/opt/my/lib:$ LD_LIBRARY_PATH
#my_program
 
Разбира се , няма гаранция за успех , но това е начина.
И по принцип , подхода е грешен , по добре си прекомпилирай програмата , или я потърси със същите glibc , по лесно и с по голям шанс  за успех ще имаш , ако glibc е същата , но някоя друга прави проблем.