Я написал программу, которая компилируется и работает как ожидалось (без проблем) в моем дистрибутиве Ubuntu 12.10 дома. Затем я передаю свою программу на моем университетском сервере, где я впервые встретился с ошибкой (аналогично this question)Возможная ошибка компоновщика при выполнении программы на внешнем Unix-машине
/usr/lib/libstdc++.so.6: version 'GLIBCXX_3.4.9' not found (required by ./main)
Как было предложено в теме, я затем добавил -static-libstdc++
в настройках линкера, так что я используйте статическое связывание. Теперь я получаю ошибку
undefined symbol: _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE
Я не смог найти какую-либо информацию об этом в Интернете, но, возможно, я думал, что это еще одна проблема, линкер. Если у кого-то есть какой-то вклад, я был бы рад прочитать его, поскольку у меня все из хороших идей.
Почему бы не попробовать явное динамическое связывание? –
@ bash.d Спасибо за предложение. Как я могу сказать моему компилятору, что я хочу этого? – BillyJean
Обычно это происходит автоматически; кажется, что целевая машина не имеет той же библиотеки, что и вы. Возможно, [this] (http://frigidcode.com/articles/gcc-mixed-static-and-dynamic-linking.shtml) помогает вам –