Попытка использовать новый libstdc ++ на старой машине приводит к ошибке

У меня есть программа, которую я компилирую с использованием 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

Что я могу сделать, чтобы это работало?

1

Решение

Как вы обнаружили, вам нужно иметь более новый libstdc++.so.6 присутствует в более старой системе и сообщает динамическому компоновщику, как его найти.

Увидеть Как я могу гарантировать, что будет найдена динамически связанная библиотека? в FAQ по libstdc ++ и Поиск динамических или общих библиотек в руководстве, чтобы узнать, как его найти, с несколькими вариантами. LD_LIBRARY_PATH это только один из вариантов.

Исключение с плавающей запятой не должно быть связано с libstdc ++, вам нужно использовать отладчик, чтобы найти его источник и получить более подробную информацию.

0

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

Других решений пока нет …

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