Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Qt и кроссплатформенное программирование С/С++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.03.2017, 22:22   #1
oaoao
 
Регистрация: 23.03.2017
Сообщений: 3
По умолчанию Почему не полная статическая линковка?

Хочу на Qt (который скомпилирован только со статическими библиотеками под Windows на MingW)
сделать чисто статическую библиотеку. В этой библиотеке используются другие статические библиотеки.
(Например: png, gif и т.д.). Компилирую код библиотеки из QtCreator. Вот что он делает - создает .obj файлы
для каждого .cpp и потом просто вызывает утилиту ar.exe, которая заворачивает все в архив, содержащий
все скомпилированные объектники. Ссылки на внешние функции не разрешены. Хотя я через ключи -L и -l указываю
библиотеки, откуда нужно взять реализации этих функций. Никаких сообщений об unresolved external нет, хоть
я могу указывать -L и -l, хоть вообще ничего не указываю. Вопрос - как реально вызвать линкер ld,
чтобы он разрешил внешние ссылки. Может быть, понятно, что MinGW это не хочет делать, так как ему придется
разрешать ссылки и на системные библиотеки Windows.
Но это возможно и нужно, чтобы создать самодостаточную программу.

P.S. На этом "статическом" Qt 5.7 нормально компилируются примеры (examples), dll-ы. В этих случаях в make-файле есть строка,
вызывающая g++ в качестве линкера ранее полученных объектников. Это и понятно - он сваливает все объектники в PE-формат с
соответствующими заголовками, экспортами и т.д. (Но зависимости от системных Windows-dll остаются, так как линкует с их
импортными библиотеками). Но как бы заставить QtCreator влинковывать определения функций из других библиотек в объектники,
которые потом ar.exe сваливает в архивы с расширением "*.a"(т.е. библиотеки) ? Ведь MS линкеры вроде это могут.
Можно было бы вручную написать make-файлы, но это очень неудобно при работе с QtCreator (все время будут перезаписываться).

Последний раз редактировалось oaoao; 29.03.2017 в 15:07.
oaoao вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Статическая линковка OpenAL andreil Общие вопросы C/C++ 8 30.12.2016 16:28
Статическая линковка SFML Ponch_Begginer Общие вопросы C/C++ 8 18.11.2015 00:06
qt4, win32 и статическая линковка. ASGAlex Qt и кроссплатформенное программирование С/С++ 3 09.06.2009 09:13
Линковка... GHOST_Kasper Работа с сетью в Delphi 13 21.11.2007 16:06