Установка отсутствующего файла символов libstdc ++ - libc6.1-1.so.2 в Linux Mint 17 - PullRequest
0 голосов
/ 21 ноября 2018

Я пытаюсь запустить программу сотовых автоматов в Linux Mint 17 и получаю следующую ошибку:

./simu: error while loading shared libraries: libstdc++-libc6.1-1.so.2: cannot open shared object file: No such file or directory

У меня установлен libstdc ++, и там нет файла, содержащего имя libstdc ++ -libc.

Я проверил много других решений, но, похоже, ничего не работает.Поэтому мне интересно, что я должен сделать, чтобы найти и установить отсутствующий файл.Это для школьного проекта, поэтому любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 21 ноября 2018

Пожалуйста, предоставьте более подробную информацию

Вы можете получить полезные доказательства о вашем двоичном файле (simu) с помощью команды file:

file path/to/the/simu

Вы также можете удвоитьпроверьте ldd точное имя библиотек, которые ищет двоичный файл:

ldd path/to/the/simu

Пожалуйста, предоставьте выходные данные предыдущих команд, чтобы помочь ответить на ваш вопрос.

Между тем, одним из возможных ответов может быть ..

Я полагаю, что двоичный файл был скомпилирован в RedHat / Fedora / Centos с использованием пакета compat-lib * (который обеспечивает libstdc++-libc lib),

Я думаю / предположим, что в Mint / Ubuntu нет одного и того же пакета и библиотеки compat-*, но, будучи скомпилированным с такой библиотекой, возможно, он должен работать путем создания правильной символической ссылки, вручную, вПуть к библиотеке.Символическая ссылка должна указывать на одну из libstdc++ динамических библиотек, установленных в вашей системе)

, например, вы можете создать ссылку от /usr/lib/x86_64-linux-gnu/libstdc++-libc6.1-1.so.2 до /usr/lib/x86_64-linux-gnu/libstdc++.so.? где?это меньший номер версии, который вы найдете в вашей системе.Пример команды (вам нужно точно ее адаптировать):

sudo ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /usr/lib/x86_64-linux-gnu/libstdc++-libc6.1-1.so.2

Существуют также случаи (в зависимости от того, что двоичный файл скомпилирован на 32 или 64 битах), когда вам нужно изменить путь x86_64-linux-gnu на i386-linux-gnu.Вы должны попытаться приспособиться к своему делу.

Это гипотетический грубый взлом, без гарантий :-) на самом деле мне просто любопытно.

Более чистый путь

Чтобы не загрязнять вашу ОС / систему ссылками, вы можете создать новую папку, назовите ее «customlibs», там же, где у вас есть программа / бинарный файл.

Вы можетесоздайте ссылки для каждого несоответствующего имени файла библиотеки внутри этой папки, например:

ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 ./customlibs/libstdc++-libc6.1-1.so.2

Затем, чтобы выполнить программу, откройте терминал и из cli измените переменную окружения LD_LIBRARY с помощью этогокоманда:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/absolute/path/to/customlibs

таким образом, система ищет в customlibs также libs.

В том же терминале запустите программу:

./simu

Таким образом, вы не будете связываться с системой.

Тебе очень повезло

Работать «чистым способом» гораздо проще, когда копируешь необходимые библиотеки из системы, скомпилированный двоичный файл

Это также более надежный способ, я выполнил это несколько раз.Взлом, который мы сейчас выполняем, связывая с текущими системными библиотеками, немного «сложнее».Удачи.

...