Ограничить неопределенные ошибки ссылок только прямыми зависимостями - PullRequest
0 голосов
/ 01 марта 2019

Я работаю в Linux с проектами, которые делятся другими людьми и использует qt creator.

Проблема заключается в том, что я много раз получаю ссылки на ошибки, особенно потому, что это происходит:

libA используетlibB -> libA должна ссылаться на libB

libC использует libA -> libC должна ссылаться как на libA, так и на libB

appZ использует libC -> appZ должна ссылаться на libC, libA и libB

Для меня идеальным было бы, чтобы в моем файле app.pro мне нужно было просто написать: «ссылка на libC», а затем автоматически он получил бы другие зависимости.

Это потому, что это часто происходитчто кто-то меняет зависимости одной из библиотек, и много проблем, которые трудно исправить, приходят, чтобы сказать привет.

Есть ли способ установить qt creator таким образом, чтобы указывать только самые прямые зависимости, иесли да, есть ли недостаток?какая-то другая альтернатива?

Я исследовал флаг связывания --no-undefined, но до сих пор не понял, поможет ли это мне.

[Править] Просто чтобы уточнить, проблема в том, что если 100 приложений используютlibC, это становится большой проблемой, если libC или одна из его зависимостей должна связываться с новой библиотекой ... все приложения должны быть изменены, или у них есть проблемы со связыванием.Я просто ищу способ ограничить эту проблему

1 Ответ

0 голосов
/ 01 марта 2019

Ну, ссылки - это широкая тема, и для понимания всего этого часто требуется огромное время и опыт.

Чтобы ответить на ваш вопрос, никто не меняет зависимости библиотек или файлов в одночасье.Даже если они изменяются, они предоставляют предыдущую версию вместе с новой версией и обеспечивают обратную совместимость с предыдущей версией этой библиотеки (то есть старый API будет работать).Если они добавили несколько новых зависимостей для обеспечения новой поддержки или функций, они подробно описывают, какие новые файлы вам нужны и как создать эту новую библиотеку.

Во многих случаях, если вы не хотите никакой новой поддержки, используйте старую версию самой библиотеки.Но обычно в новой библиотеке есть некоторые исправления ошибок, и лучше перейти на новую версию.

Мы используем библиотеки для сокращения нашей рабочей нагрузки, но удивительно, что мы увеличиваем некоторую рабочую нагрузку для создания сторонних библиотек, отслеживаяизменений и ошибок в этих библиотеках, исправления ошибок компоновки и т. д. К сожалению, иметь дело с библиотеками не так просто, как в случае Java или npm.

Я пишу скрипт в Linux, который отслеживает все.Но этот сценарий сам по себе не автоматизирован, но он уменьшает большую часть моей рабочей нагрузки.Я думаю, что вы также можете сделать что-то подобное.

Просто чтобы прояснить, проблема в том, что если 100 приложений используют libC, это становится большой проблемой, если libC или одна из ее зависимостей должна ссылаться на новую библиотеку..все приложения должны быть изменены, или у них есть проблемы со связыванием.Я просто ищу способ ограничить эту проблему

В этом случае легко, просто соберите новую библиотеку на своем компьютере сборки и укажите путь к файлу в LD_LIBRARY_PATH.Я понимаю, что это не так просто, как сказано, но, как упоминалось ранее, работать с библиотеками не так просто, как в случае с Java или npm.Возможно, вам также придется внести некоторые изменения в сценарий, который вы используете для поддержки вашей сборки.Я не вижу никаких ярлыков.

...