Рассматривали ли вы использование Qt Creator в качестве среды сборки и IDE?Лично я никогда не использовал его для разработки на Ubuntu, но я использовал его на Windows с g ++, и там он прекрасно работает.И кажется, что он уже доступен как пакет в репозитории .
Некоторые из преимуществ, которые вы получите, используя его:
- Qt Creator будет (обычно) управлять файлами .pro для вас.(Если вы похожи на меня, вы все равно можете добавить здесь много дополнительных вещей, но он автоматически добавит файлы .cpp, .h и .ui по мере их добавления в проект.)
- Вы можетеустановить межпроектные зависимости, которые будут создавать проекты в любом порядке, в котором они должны ссылаться.
- Вы можете использовать его интеграцию с gdb для пошагового выполнения и отладки кода, а также для перехода к коду.
- Вы получаете автозаполнение сигналов и слотов Qt, а также подсветку встроенного синтаксиса и некоторую проверку ошибок.
- Если вы работаете с графическим интерфейсом, вы можете использовать встроенный конструктор для визуального макета и разработки форм.
Возвращаясь к вашему актуальному вопросу, я не думаю, что у флага есть возможность сказать gcc, чтобы он не выдавал ошибку, когда ссылка не работает, просто потому, что у компоновщика нет возможности лениво связывать библиотеки.Если он связан со статическими библиотеками (.a), то он должен иметь возможность фактически скопировать реализацию этого кода в исполняемый файл / библиотеку.Если это динамическое связывание (.so), ему все еще нужно проверить, что требуемые функции действительно существуют в библиотеке.Если он не может связать его во время шага связывания, когда он может связать?
В качестве запоздалой мысли, если в процессе компиляции есть циклические зависимости (A зависит от B, B от C, иC на A), тогда вам может понадобиться создать поддельную версию библиотеки, в которой есть только пустые заглушки для реализации каждой функции и полное определение для каждого класса или объекта.Затем соберите все остальное, связавшись с ним, и, наконец, соберите реальную версию поддельной библиотеки и свяжите ее со всеми другими версиями, которые уже были связаны.Я думаю, что это будет работать только на динамическое связывание.