Как я могу исправить конфликты библиотек во время компиляции, вытекающие из установленных вручную пакетов из исходного кода?

У меня 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.

Мне надоело настраивать пути к библиотекам. Что вы предлагаете мне в этой должности?

0
задан 23 May 2017 в 15:39

1 ответ

Основной вопрос здесь был существованием библиотек и включает в /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, обычно рекомендуется пользоваться той библиотекой вместо того, чтобы компилировать его собой (если Вы потребность более новая версия библиотеки или для разработки или исправить ошибку); тот путь при обновлении системы, та библиотека обновлен также и перекомпилирован для соединения правильно с другими библиотеками.

1
ответ дан 23 May 2017 в 15:39

Другие вопросы по тегам:

Похожие вопросы: