LINUX.ORG.RU

Кросскомпиляция Haskell GTK+


0

0

Есть приложение на Haskel которое использует GTK+. Сам сижу под линуксом но необходима верси под windows. Могут ли местные гуру подсказать как осуществить процесс кроскоспиляции, и можно ли вобще такое осуществить, или дать ссылку, потому что поиск в гугле не дал вразумительных результатов. Компилятор GHC 6.8.2.

anonymous

Поставить mingw + wine + ghc-win32 - потом им собрать gtk2hs из сорцов. Сам не пробовал просто предполагаю.

imp ★★
()

Поставил GHC и Gtk2Hs под вайном, пробовал скомпилить но выдает ошибку на этапе линковки Glasgow Haskell Compiler, Version 6.8.3, for Haskell 98, stage 3 booted by GHC version 6.6

...........

C:/Gtk2Hs/libHSgtk.a(Object__4.o)(.text+0x41):fake: undefined reference to `g_object_ref_sink' C:/Gtk2Hs/libHSgtk.a(hsgthread.o)(.text+0x24): In function `gtk2hs_threads_initialise':

gtk/Graphics/UI/Gtk/General/hsgthread.c:155:0: undefined reference to `g_thread_init' C:/Gtk2Hs/libHSglib.a(GObject__17.o)(.text+0x4a):fake: undefined reference to `g_object_unref' collect2: ld returned 1 exit status *** Deleting temp files: Deleting: C:/windows/temp/ghc26_0/ghc26_0.o C:/windows/temp/ghc26_0/ghc26_0.rc *** Deleting temp dirs: Deleting: C:/windows/temp/ghc26_0

Нашел обсужение по похожей ошибке вот: > As Axel says, it looks like it's not linking to glb-2.0.lib. All the > named undefined symbols exist in glb-2.0.lib. Use ghc -v to get verbose > output and see how ghc is calling gcc to link things and if glib-2.0 is > there. By fiddling with the order and presence of various -l link flags > you might discover something interesting. однако glib-2.0 есть в опциях линковки, думаю может компиляция gtk2Hs может помочь, потому что перед этим ставил просто инсталятором.

anonymous
()
Ответ на: комментарий от anonymous

Можно использовать вмваре или другие виртуальные машины. Лучшей компиляционной и тестовой среды не требующей ребута еще не придумали.

rab_boziy
()
Ответ на: комментарий от anonymous

Хотя в интерпретаторе работает! Все библиотеки нормально грузятся и никаких конфликтов.

anonymous
()
Ответ на: комментарий от anonymous

Покупай Мак (кстати, само по себе хорошая идея).

Либо ты делаешь версию под винды, либо не делаешь и не ставишь винду. Если версия под винды нужна - у тебя нет выбора, в частности потому, что написанное нужно ещё и ТЕСТИРОВАТЬ, и тестировать не под вайном, чтобы клиенту не приходилось ставить вайн под винды.

Miguel ★★★★★
()
Ответ на: комментарий от Miguel

я потому и хочу сдклать кросскомпиляцию чтобы клиент вайн не ставил,а почему нельзя отлаживать под линуксом?

anonymous
()
Ответ на: комментарий от anonymous

А как ты будешь виндовс-специфичные баги отлавливать под линуксом?

rab_boziy
()
Ответ на: комментарий от anonymous

>однако glib-2.0 есть в опциях линковки,

попробуй поменять местами по порядку, gcc чуствителен к порядку, в котором линкуются либы

>думаю может компиляция gtk2Hs может помочь, потому что перед этим ставил просто инсталятором.

или пересобрать из исходников gtk+/glib. Попробовать debug/release, может что-то вроде юниттестов собирается только в debug (хотя про нити не должно)

anonymous
()
Ответ на: комментарий от anonymous

>fake: undefined reference to `g_object_ref_sink'
>undefined reference to `g_thread_init'

>fake: undefined reference to `g_object_unref'


или как вариант, может быть в windows порте glib эти функции не собираются. Можно попробовать попортировать, взять пересобрать glib, nm-ом посмотреть эти функции, если их нет, попробовать написать заглушки (прототипы можно посмотреть в гугле в доке к glib/gtk), и собрать с заглушками.

Хотя скорее надо просто всё заново пересобрать из исходников и указать корректные опции линковки (сначала линковать с glib, потом с gtk2hs)

Как вариант, собрать под линуксом (посмотреть опции линковки там).
Собрать mingw-ом из под линукса в целевую винду (посмотреть опции линковки там). Прописать одинаковые опции и там и там.

anonymous
()
Ответ на: комментарий от anonymous

А как объяснить тот факт что при загрузки прогги в интерперетатор и запуск из него все либы грузятся и все нормально работает?

anonymous
()
Ответ на: комментарий от anonymous

Интерепретатор виндовый и запускаю под вайном так же как и компилятор(GHC) по идее он берет те же либы что и компилятор.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.