У меня Ubuntu 14.04 обновлена с 12.04 и делает dist-апгрейды. В прошлом я делал много ручных установок, таких как ffmpeg , libglib и так далее. У меня есть хороший пользовательский дистрибутив, он работает хорошо, но у меня возникают проблемы при попытке компилировать приложения. Ошибки, которые я получил, научили меня многому, я нашел, как бороться с ошибками компоновщика, я перечислю некоторые из них ниже:
как можно руководствоваться компилятором для использования определенным -library
как исправить-pkg-prog-pkg-config-command-not-found-error
pkg-config -modversion-glib-2-0-reports-более ранняя версия
как исправить-libgmodule-2-0-так-0-невозможно-прочитать-символы- invalid-operation-erro
множественные-ffmpeg-пути-библиотеки-как-можно-исключить-старые-ffmpeg-Installation
как-то can-i-use-a-specific-library-while-compiling
Я пришел к такой точке, что даже я могу получить ошибки при компиляции нативных приложений Ubuntu, таких как unity (Я хочу встроить модуль запуска в Каирский док модуль запуска в Каирский док )
Как я могу исправить эти библиотечные конфликты? Я потерял каталоги приложения, скомпилированные вручную, поэтому у меня нет шансов запустить make uninstall
.
Мне надоело настраивать пути к библиотекам. Что вы предлагаете мне в этой должности?
Основной вопрос здесь был существованием библиотек и включает в /usr/local
, которые были скомпилированы в Точном (12.04).
При поиске заголовков разработки, определенных #include
, gcc
и g++
, имеют /usr/local/include
выше в списке, чем /usr/include
. Поэтому, если у Вас будут dev заголовки библиотеки и в /usr/local/include
и в /usr/include
, тогда тот в /usr/local/include
будет использоваться, независимо от версии . В то время как это, возможно, было прекрасно в Точном, так как библиотеки, которые были локально скомпилированы, были, вероятно, более новыми версиями, это не будет прекрасно в Надежном человеке, когда версия системы библиотеки имела бы равную или более новую версию библиотеки, Вы установили. Кроме того, как измененные системные библиотеки, SONAMEs изменился бы и локально скомпилировал бы библиотеки, должен будет быть перекомпилирован. Поэтому gcc
/ g++
использовал бы более старую версию и может жаловаться на отсутствующие символы и/или соединение ошибок.
, Если библиотека присутствует в основном repos, обычно рекомендуется пользоваться той библиотекой вместо того, чтобы компилировать его собой (если Вы потребность более новая версия библиотеки или для разработки или исправить ошибку); тот путь при обновлении системы, та библиотека обновлен также и перекомпилирован для соединения правильно с другими библиотеками.