Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Компиляция GTK под Windows
Форум на CrossPlatform.RU > Библиотеки > GTK+
Andra
Здравствуйте. Хочу скомпилировать свои проекты, написанные на GTK из-под Linux под Windows.
Поставил MinGW, скачал gtk+-bundle_2.22.0-20101016_win32, а не работает(
Простые проекты не на GTK, а на чистом Си компилирует на ура.
Использую gtk, cairo, threads
Ошибка вообще не понятная :( Нажмите для просмотра прикрепленного файла
Помогите! плиз
Litkevich Yuriy
ошибка типовая - линкеру что-то не понятно, обычно когда каких-то библиотек не хватает
Andra
Цитата(Litkevich Yuriy @ 28.11.2010, 1:52) *
ошибка типовая - линкеру что-то не понятно, обычно когда каких-то библиотек не хватает


А как исправить?
Делаю все по порядку
1) Устанавливаю mingw-get-inst-20101030.exe
2) Распаковываю gtk+-bundle_2.22.0-20101016_win32. Заменяю все файлы в папке MinGW. Или надо только дописывать недостающие?
3) В папку c:\FILES\MinGW\msys\1.0\home\Andrey\ складываю файл моего проекта
4) Запускаю c:\FILES\MinGW\msys\1.0\msys.bat
5) Там пишу gcc 1.c `pkg-config --cflags gtk+-2.0`
Andra
ухх, ну я совсем замучался, все варианты перепробовал, никак не пойму почему не работает...
Может есть какие еще варианты или я что-то не так делаю?
P.S. у меня есть Visual Studio 2010 pro, может быть там можно что-нибудь сделать?
Iron Bug
а ты проверял, что у тебя pkg-config --cflags gtk+-2.0 выдаёт нужные результаты? может, в путях не прописано что-то и там пусто вообще.
Litkevich Yuriy
Цитата(Andra @ 28.11.2010, 3:58) *
2) Распаковываю gtk+-bundle_2.22.0-20101016_win32. Заменяю все файлы в папке MinGW. Или надо только дописывать недостающие?
вот это что-то вообще не то. папку компилятора трогать не надо.
Andra
я разобрался, компилировать он хочет только одним способом. Вот он:
1) Пишем makefile и помещаем его в папку home
2) Его содержимое:
CC=gcc
CFLAGS=`pkg-config --cflags --libs gtk+-2.0`
CFLAGS+=-mwindows
SRC=name.c
OBJ=$(SRC:.c=.o)
OUT=name.exe

all: $(OUT)
    rm $(OBJ) #Remove .o

$(OBJ) :
    $(CC) $(SRC) $(CFLAGS) -c #Create .o

$(OUT) : $(OBJ)
    $(CC) $(OBJ) $(CFLAGS) -o $@ #Link .o

3) В msys.bat пишем make и все работает
И делается это только так. Файл становится зависимым от dll библиотек из папки bin и без них не запускается.
Т.е. теперь надо их всегда складывать в папку к моей программе или можно от этого как-нибудь избавиться?)
И еще интересно почему не сработал обычный способ компиляции gcc name.c `pkg-config --cflags --libs gtk+-2.0`?
Iron Bug
а -mwindows у тебя был указан?

gtk можно собрать статически и линковать в виде статических библиотек. тогда не будет зависимостей. но файл, соответственно, будет жирный.
Гость_Andra_
Цитата(Iron Bug @ 2.12.2010, 21:17) *
gtk можно собрать статически и линковать в виде статических библиотек. тогда не будет зависимостей. но файл, соответственно, будет жирный.


Можно поподробней, как это сделать?
И еще вопрос, как добавить к окну соответствующее оформление Windows, чтобы было не в стиле 98 windows?
Гость_sunny_*
Чтобы применить тему в стиле Windows нужно в файле C:\GTK\etc\gtk-2.0\gtkrc [У меня GTK стоит в папке C:\GTK]
написать:
gtk-theme-name = "MS-Windows"


Гость_sunny_*
Я давно хочу сделать статические библиотеки для GTK, заманчиво не таскать с собой кучу DLL библиотек.
Я вижу единственный вариант как это сделать - скачать исходники glib, gtk, pango и прочее,
потом по порядку создать статические библиотеки *.a (или *.lib для компиляции в VisualStudio)
Iron Bug
это можно сделать. но ты упаришься линковать отдельные .a файлы и выходной файл будет поистине огромен.
sunny
Цитата(Iron Bug @ 4.5.2011, 13:43) *
это можно сделать. но ты упаришься линковать отдельные .a файлы и выходной файл будет поистине огромен.

В исходниках есть makefiles для win32. У configure даже есть ключ --enable-static для сборки статической библиотеки.
Так что запарки при сборке GTK теоретически должно быть минимум, потом меняем родные *.a или *.lib файлы на статические и дальше компиляция приложения идёт без отличий.
Другое дело выходной размер файла, думаю для приложения он будет 3-10 Мб, но по любому не больше чем таскать с собой 12-15 Мб dll-библиотек. А вот каталоги etc и lib наверное придётся с собой всё равно таскать, так что в один файл наверное не уложиться (из за чего статическая линковка теряет смысл).
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2020 IPS, Inc.