Форум » [x]Harbour » как сделать кросскомпиляцию » Ответить

как сделать кросскомпиляцию

dimao: Привет! Задался вопросом, как скомпилировать прогу под Windows Mobile. Упоминания о возможности этого есть, но какую ручку куда крутить? Сам сижу на Убунте, хочу скомпилитиь маленькую прогу под WM 5/6 Научите

Ответов - 11

Chikanuk: hbmk2 --help > hbmk2.txt Там есть что почитать Получится что-то вроде этого: hbmk2 -platform=wce file.prg Под WM не компилировал (по причине отсутствия оной), а под Windows собиралось. И даже работало

dimao: спасибо, сейчас попробую

dimao: чета я туплю user@desktop:~/sources/Projects/qqq$ hbmk2 -platform=wce -compiler=mingwarm testcdp-db.prg Harbour 2.1.0rc1 (Rev. 16114) Copyright (c) 1999-2011,http://harbour-project.org/ Compiling 'testcdp-db.prg'... Lines 128, Functions/Procedures 1 Generating C source output to '/tmp/hbmk_epuk1e.dir/testcdp-db.c'... Done. /usr/bin/ld: cannot find -lgtwvt /usr/bin/ld: cannot find -lgtgui /usr/bin/ld: cannot find -lhbmainwin /usr/bin/ld: cannot find -lcoredll /usr/bin/ld: cannot find -lws2 /usr/bin/ld: cannot find -lceshell /usr/bin/ld: cannot find -luuid /usr/bin/ld: cannot find -lole32 /usr/bin/ld: cannot find -loleaut32 /usr/bin/ld: cannot find -lwininet /usr/bin/ld: cannot find -lcommdlg /usr/bin/ld: cannot find -lcommctrl collect2: ld returned 1 exit status hbmk2: Error: Running linker. 1 gcc /tmp/hbmk_epuk1e.dir/testcdp-db.o /tmp/hbmk_epuk1e.dir/hbmk_oz245u.o -Wl,--start-group -lhbextern -lhbdebug -lhbvm -lhbrtl -lhblang -lhbcpage -lgtcgi -lgtpca -lgtstd -lgtwvt -lgtgui -lhbrdd -lhbuddall -lhbusrrdd -lrddntx -lrddcdx -lrddnsx -lrddfpt -lhbrdd -lhbhsx -lhbsix -lhbmacro -lhbcplr -lhbpp -lhbcommon -lhbmainwin -lcoredll -lws2 -lceshell -luuid -lole32 -loleaut32 -lwininet -lcommdlg -lcommctrl -Wl,--end-group -otestcdp-db.exe -L/usr/local/lib/harbour -L/usr/local/bin Может как-то пересобрать компилятор надо? или поставить какие-то библиотеки?


Chikanuk: dimao пишет: или поставить какие-то библиотеки? Судя по выводу - да. gtwvt, gtgui, ... , commctrl. Их под Линукс/Юникс нет. Точно не скажу сейчас, но попробуй подсунуть \lib\*.a \include\*h *.ch от виндовой MINGW-сборки Попробуй сначала консольное, типа ? "Hello" собрать. И mingwarm не указывай (gcc в убунте).

dimao: у меня под wine Харбор стоит. оттуда слил папки с либами и инклюдами и сделал такой HBP: -platform=win -compiler=mingw -L./lib -I./include testcdp-db.prg прога - простейшая. тест кодовых страниц для русского языка. на выходе получается обычный линуховый ELF бинарник. Почему?

Chikanuk: Боюсь ошибиться (давно дело было), но кажется, собирал несколько харборов с опцией HB_PLATFORM=xxx (где xxx := win, linux ...) с разными HB_INSTALL_PREFIX (чтобы в разные директории собирались), а потом собирал программу с помощью hbmk2 под нужную платформу, устанавливая export PATH=/hbwin/bin:$PATH для винды и export PATH=/hblin/bin:$PATH для линукса. Наверное, надо будет собрать харбор для wince, и уж тогда пробовать собирать программку?

dimao: да, наврное так будет правильно. сейчас попробую. Кстати, может у кого есть готовый Харбор под винду (или Linux) для компиляции под WM ?

dimao: Вот набрел на ссылочку: http://groups.google.com/group/harbour-devel/browse_thread/thread/6258227c0fa30a9c/79ec5e3716476333?q=harbour+cross+compilation+windows+mobile#79ec5e3716476333

dimao: как героический лентяй, пошел по "простому" пути: в WINE поставил nightly bin, в папку comp\mingwarm поставил скачанный CEGCC. По утверждению разработчиков должно пахать C:\src>hbmk2 -platform=wce testcdp-db.prg Harbour 2.1.0rc2 (Rev. 16370) Copyright (c) 1999-2011,http://harbour-project.org/ Compiling 'testcdp-db.prg'... Lines 128, Functions/Procedures 1 Generating C source output to 'C:\users\dimao\Temp\hbmk_v1xqaa.dir\testcdp-db.c'... Done. hbmk2: Error: Running C/C++ compiler. -1073741515 "C:\hb\comp\mingwarm\bin\i386-mingw32ce-gcc.exe" -c -O3 -march=i586 -mtune=pentiumpro -fomit-frame-pointer -W -Wall -pipe -DUNICODE -DUNDER_CE -IC:/h b/include "C:/users/dimao/Temp/hbmk_v1xqaa.dir/testcdp-db.c" C:/users/dimao/Temp/hbmk_717mj3.c что это за ошибка такая? Может знает кто? неужто бакслэши так портят все?

Chikanuk: Я не гуру в кросскомпиляции, но вот это -march=i586 -mtune=pentiumpro настораживает... Вряд ли winmobile на таком железе работает Скорей всего ARM какой-нибудь. GCC -march help поможет выбрать (илиhttp://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html#ARM-Options). Это в плане железа. Еще попробуй hbmk2 -st -platform=wce testcdp-db.prg (это для однопоточного режима).

Chikanuk: Цитата из HARBOUR_README_MINGWARM: NOTES: - In order to unpack and *use* this package, you'll need Cygwin package (fromhttp://cygwin.com) installed and put in PATH for Cygwin runtime (cygwin1.dll). Это сделано?



полная версия страницы