У меня есть программа, которую я компилирую с использованием CMake на машине A, но я хочу запустить ее на более старой машине B. Когда я это делаю, я получаю следующее:
/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by ./program)
/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by ./program)
/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by ./program)
я видел этот вопрос и я думаю, что лучший способ решить мою проблему — скопировать более новую версию на компьютер B. Поэтому я скопировал /usr/lib/libstdc++.so.6
(а также libstdc++.so.6.0.14
) от А до ~/lib
на Б и сделал
export LD_LIBRARY_PATH=~/lib:$LD_LIBRARY_PATH
после этого. При запуске моей программы я теперь получаю
Floating point exception
Что я могу сделать, чтобы это работало?
Как вы обнаружили, вам нужно иметь более новый libstdc++.so.6
присутствует в более старой системе и сообщает динамическому компоновщику, как его найти.
Увидеть Как я могу гарантировать, что будет найдена динамически связанная библиотека? в FAQ по libstdc ++ и Поиск динамических или общих библиотек в руководстве, чтобы узнать, как его найти, с несколькими вариантами. LD_LIBRARY_PATH
это только один из вариантов.
Исключение с плавающей запятой не должно быть связано с libstdc ++, вам нужно использовать отладчик, чтобы найти его источник и получить более подробную информацию.
Других решений пока нет …