Как собрать программу GTK + 3 в Windows без MSYS2? - PullRequest
4 голосов
/ 27 июня 2019

Я хочу скомпилировать код в GTK + 3.Без использования MSYS2 или Visual Studio.Я получаю "неопределенную ссылку на"

Во-первых, попробовал этот урок с официальной страницы: https://www.gtk.org/download/windows.php, но в MSYS2 был беспорядок;Кроме того, я не хочу ни Linux, ни Unix-подобных сред (намного меньше Visual Studio).

Я скачал «все в одном комплекте» для версии 2, настроил переменную окружения и все такое.Все работало нормально, код скомпилирован!(код из версии 2).Затем я попытался перейти на версию 3, загрузив все в одном пакете (64 бита) из: http://www.tarnyko.net/dl/gtk.htm

Конечно, переменная окружения была обновлена, и версии библиотек в строке компиляции тоже,И программа для версии 3, а именно первая на официальном сайте: https://developer.gnome.org/gtk3/stable/gtk-getting-started.html. Не работает.

Затем, следуя этому руководству: http://www.tarnyko.net/repo/gtk3_build_system/tutorial/gtk3_tutorial.htm

Я переписалстрока компиляции с результатом команды: pkg-config --cflags --libs gtk+-3.0 (как сказано в учебнике выше)

строка компиляции для версии 2 (работает правильно):

gcc -Wall -g test.c -o test -mms-bitfields -Ic:/gtk/include/gtk-2.0 -Ic:/gtk/lib/gtk-2.0/include -Ic:/gtk/include/atk-1.0 -Ic:/gtk/include/cairo -Ic:/gtk/include/gdk-pixbuf-2.0 -Ic:/gtk/include/pango-1.0 -Ic:/gtk/include/glib-2.0 -Ic:/gtk/lib/glib-2.0/include -Ic:/gtk/include -Ic:/gtk/include/freetype2 -Ic:/gtk/include/libpng14 -Lc:/gtk/lib -lgtk-win32-2.0 -lgdk-win32-2.0 -latk-1.0 -lgio-2.0 -lpangowin32-1.0 -lgdi32 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lglib-2.0 -lintl

компиляцияСтрока для версии 3 (которую я спрашиваю):

gcc -Wall -g iniciando.c -o iniciando -mms-bitfields -IC:/gtk3/include/gtk-3.0 -IC:/gtk3/include/cairo -IC:/gtk3/include/pango-1.0 -IC:/gtk3/include/atk-1.0 -IC:/gtk3/include/cairo -IC:/gtk3/include/pixman-1 -IC:/gtk3/include -IC:/gtk3/include/freetype2 -IC:/gtk3/include -IC:/gtk3/include/libpng15 -IC:/gtk3/include/gdk-pixbuf-2.0 -IC:/gtk3/include/libpng15 -IC:/gtk3/include/glib-2.0 -IC:/gtk3/lib/glib-2.0/include -LC:/gtk3/lib -lgtk-3 -lgdk-3 -lgdi32 -limm32 -lshell32 -lole32 -Wl,-luuid -lpangocairo-1.0 -lpangoft2-1.0 -lfreetype -lfontconfig -lpangowin32-1.0 -lgdi32 -lpango-1.0 -lm -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0 -lintl

Последняя библиотека (intl) в начале дала проблемы, потому что она не существовала там, где она должна быть, и ничего не компилировалось.;я удалил его и получил ошибку, которую я запрашиваю, затем скопировал intl из моего GTK 2 (просто чтобы посмотреть, что произошло), ошибка та же.

Я ожидаю, что программа будет скомпилирована;но я получаю: undefined reference to: 'gtk_main_quit' (и все функции GTK).

1 Ответ

1 голос
/ 27 июня 2019

Во-первых, забудьте об использовании GTK + 2, он будет объявлен устаревшим после выпуска GTK + 4 (возможно, этим летом). Используйте GTK + 3, который был стабильным в течение многих лет.

Во-вторых, забудьте все о инструкциях на сайте Тарнико. Хотя в то время он отлично поработал, эти инструкции полностью устарели, и предварительно скомпилированные двоичные файлы предназначены для устаревших версий GTK + (версия 3.6 была выпущена в сентябре 2012 года, а последняя версия 3.24 выпущена в сентябре 2018 года)

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

Далее, вам нужен набор инструментов, если вы действительно хотите что-то построить. Кажется, вы уже установили gcc, как вы его установили? Если вы хотите использовать предварительно скомпилированные двоичные файлы, вам придется установить и настроить цепочку инструментов самостоятельно, поскольку это зависит от вашей настройки. Обычно, чтобы избежать проблем совместимости, вам нужен тот же набор инструментов, который использовался для построения ваших зависимостей, и это то, что предоставляет MSYS.

В крайнем случае, вы можете просто собрать все это из исходного кода, поскольку последние версии GTK + могут быть собраны с использованием системы сборки Meson, которая должна прекрасно работать в Windows.

Но на самом деле, если вы уже планируете использовать gcc, просто сделайте себе одолжение и установите MSYS2. Вы получите GTK +, набор инструментов, а также привязки и другие инструменты, такие как glade и devhelp, которые (по крайней мере, для Glade), вероятно, понадобятся, если вы захотите провести серьезную разработку GTK +.

...