Рейтинг:0

отсутствуют libm.so.6 и libstdС++.so.6

флаг jp
A D

У меня есть программа, которую я скомпилировал с помощью qt Creator и, похоже, она отлично работает на моем компьютере, но я пытаюсь запустить ее на удаленном кластере компьютеров, и она выдает эти сообщения об ошибках.

./programs/sampleapp: /lib64/libm.so.6: версия `GLIBC_2.29' не найдена (требуется ./programs/sampleapp)
./programs/sampleapp: /lib64/libstdc++.so.6: версия GLIBCXX_3.4.26 не найдена (требуется ./programs/sampleapp)
./programs/sampleapp: /lib64/libstdc++.so.6: версия `GLIBCXX_3.4.21' не найдена (требуется ./programs/sampleapp)

Я предполагаю, что эти зависимости отсутствуют? Я не знаю, где их найти. Их поиск в Google не приводит меня ни к чему, что работает, и я безуспешно пытался найти на своем собственном компьютере.

guiverc avatar
флаг cn
Пожалуйста, обратитесь к https://askubuntu.com/help/on-topic, Ubuntu и официальные *разновидности* Ubuntu (https://ubuntu.com/download/flavors) относятся к теме на этом сайте. Ссылка по теме предоставляет альтернативные сайты SE для операционных систем, отличных от Ubuntu. *Здесь нет системы по теме, которая предоставляет требуемую версию библиотеки, поэтому держу пари, что вы не используете систему по теме*
флаг hr
Насколько я знаю, это сообщение не означает, что библиотеки *отсутствуют*, это означает, что они слишком старые, или, точнее, программа была собрана с использованием более новых версий библиотек, чем те, которые присутствуют в целевой системе.
Knud Larsen avatar
флаг by
Скажем, в вашем удаленном кластере есть glibc/libc6 версии 2.27: тогда вам нужно будет собрать свое приложение с «ОС libc6 - 2.27» .... или даже на более старой ОС. .... Пример: Ubuntu 18.04 имеет libc6-2.27.
Рейтинг:1
флаг es

Вы только что узнали, почему вам нужно пересобирать приложения для разных разновидностей или даже версий Linux. Некоторые из них могут работать в других дистрибутивах, но это не гарантируется.

В общем, создавайте свое приложение на машине (или, по крайней мере, на машине с тем же дистрибутивом), на которой вы хотите его запустить. Или, что еще лучше, создавайте программное обеспечение пакеты (.deb для Ubuntu/Debian, .rpm для SUSE/Red Hat/Fedora/CentOS) для автоматизации процесса и обеспечения автоматической обработки зависимостей (например, общих библиотек).

Нет, это не просто, но необходимо.

A D avatar
флаг jp
A D
Хорошо, моя система основана на Ubuntu, но целью является CentOS 7. Так что, я думаю, я попытаюсь написать make-файл и посмотреть, смогу ли я встроить его туда с помощью gcc. и тогда я, возможно, сделаю деб в будущем, если мне нужно будет запустить это в куче мест.
HuHa avatar
флаг es
Поскольку вы упомянули Qt в ключевых словах своего вопроса, лучше начните с QMake или CMake. Написанные вручную файлы Makefile слишком болезненны для сегодняшней сложности, особенно когда речь идет о том, какие общие библиотеки вам нужно связать с вашим проектом и точные параметры для этого. И QMake, и CMake делают это за вас.
A D avatar
флаг jp
A D
Я наконец-то запустил его после удаленной сборки. Самое смешное, что я перенес предыдущие версии программы, созданной с помощью QT, локально и без проблем запустил ее на том же кластере. Но я просто вынимаю несколько исходных файлов, и внезапно он больше не переносится. Теперь я должен выяснить, почему.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.