Glibc проблема с использованием g ++

У меня проблема, я компилирую свое приложение C ++ на машине Linux. Затем я перемещаю исполняемый файл на другую машину, но у меня есть ошибка:

./server: /lib64/libc.so.6: version `GLIBC_2.7' not found (required by ./server)

Как я могу это исправить? Без перекомпиляции на втором компьютере, где происходит эта ошибка (это мой клиентский компьютер)

Команда компиляции:

g++  -o server  test.cpp server.cpp ... -lboost_system -lboost_thread -std=c++0x

Спасибо!

0

Решение

Ваше приложение использует библиотеку glibc-2.7, и приложение не может найти ее на другом компьютере. Вероятно, есть более старая версия этой библиотеки. У вас есть следующие варианты:

  • Обновите эту библиотеку на целевом хосте
  • Свяжите ваше приложение с более старой версией библиотеки
  • Использовать статические ссылки
  • Корабельная библиотека вместе с приложением

Как статически ссылаться только на одну библиотеку:

gcc main.c mylibrary.a -o main

Обратите внимание, что большинство дистрибутивов не устанавливают статические библиотеки по умолчанию.

4

Другие решения

Есть три варианта:

  1. скомпилировать на оригинальной машине с -static передается компилятору, который будет включать соответствующие библиотеки в ваш двоичный файл [и, возможно, даст вам одно или два предупреждения о том, что «это может работать неправильно»]
  2. скомпилируйте код на новой машине.
  3. Установите правильную версию библиотеки на целевой машине.

Я склонен использовать вариант 1 большую часть времени, но использовал все три в разных точках.

1

По вопросам рекламы [email protected]