'make install' компенсирует libstdc ++. so.6 без GLIBCXX_3.4.15, но у меня есть файл libstdc ++. so.6 в LD_LIBRARY_PATH - PullRequest
0 голосов
/ 09 мая 2018

на Centos 6.9, я создаю cmake 3.5.0. У меня установлен cmake 3.4.3. Для 3.5.0 я сделал нормально, затем сделал sudo make install. Но это дает мне:

/home/ckim/CARLA/carla/cmake-3.5.0/Bootstrap.cmk/cmake: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by /home/ckim/CARLA/carla/cmake-3.5.0/Bootstrap.cmk/cmake)
/home/ckim/CARLA/carla/cmake-3.5.0/Bootstrap.cmk/cmake: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /home/ckim/CARLA/carla/cmake-3.5.0/Bootstrap.cmk/cmake)
make: *** [cmake_check_build_system] Error 1

Но у меня есть / usr / local / lib64 перед / usr / lib64 в $ LD_LIBRARY_PATH, а /usr/local/lib64/libstdc++.so.6 имеет GLIBC_3.4.15 и GLIBC_3.5.21.

ckim@stph45:~/CARLA/carla/cmake-3.5.0] strings /usr/local/lib64/libstdc++.so.6 | grep GLIBC
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_3.4.20
GLIBCXX_3.4.21
GLIBC_2.3
GLIBC_2.2.5
GLIBC_2.3.2
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH

В чем может быть проблема?

1 Ответ

0 голосов
/ 10 мая 2018

Но у меня есть / usr / local / lib64 перед / usr / lib64 в $ LD_LIBRARY_PATH

Когда вы запускаете под sudo, GLIBC будет игнорировать LD_LIBRARY_PATH и использовать только системные пути для поиска библиотек.

Если GLIBC этого не сделает, вы можете просто скомпрометировать любую setuid программу, указав LD_LIBRARY_PATH на свою libc.so.6.

Решения:

  1. Лучше: не используйте LD_LIBRARY_PATH. Вместо этого скомпилируйте ваши программы с соответствующим параметром компоновщика -rpath=, чтобы они просто работали.

  2. Хуже: sudo -s. Теперь установите LD_LIBRARY_PATH как хотите, затем запустите make install.

...