КАк компилировать в Lazarus для WinCE

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Fagot
незнакомец
Сообщения: 5
Зарегистрирован: 14.02.2007 14:52:13

КАк компилировать в Lazarus для WinCE

Сообщение Fagot »

Здравствуйте! Только вчера вечером впервые услышал про Лазарус. Скачал. Установил. Но не могу компилировать программы под WinCE. Насколько я понял, у меня нет под это дело компилятора. Сколько здесь лазил - не нашёл структурированной и понятной информации по поводу того, что и зачем скачивать и ставить...
Итак, кто может мне, дубу, объяснить, что нужно ещё, кроме Лазаруса скачать, чтобы компилировать программы под WinCE на WinXP?
Fagot
незнакомец
Сообщения: 5
Зарегистрирован: 14.02.2007 14:52:13

Сообщение Fagot »

Ну раз никто не помогает... ;)
Скачал другой дистр Лазаруса, где, вроде бы всё для компиляции на winCE есть. Но при выполении компиляции

Код: Выделить всё

 make cycle CPU_TARGET=arm OS_TARGET=wince

минут через пять компиляции начинается длинный список ошибок. Здесь приведу начало:

Код: Выделить всё

make[3]: Leaving directory `C:/Apps/lazarus/pp/rtl/wince'
make[2]: Leaving directory `C:/Apps/lazarus/pp/rtl'
make -C ../rtl 'OPT=' all
make[2]: Entering directory `C:/Apps/lazarus/pp/rtl'
make -C wince all
make[3]: Entering directory `C:/Apps/lazarus/pp/rtl/wince'
C:/Apps/lazarus/pp/compiler/ppcrossarm.exe -Twince -Fi../inc -Fi../arm -Fi../win -FD../../bin/arm-wince -FE. -FU../../rtl/units/arm-wince -darm -Us -Sg system.pp
..\..\rtl\units\arm-wince\system.s: Assembler messages:
..\..\rtl\units\arm-wince\system.s:12: Error: too many memory references for `mov'
..\..\rtl\units\arm-wince\system.s:13: Error: no such instruction: `stmfd r13!,{r11,r12,r14,r15}'
..\..\rtl\units\arm-wince\system.s:14: Error: too many memory references for `sub'
..\..\rtl\units\arm-wince\system.s:15: Error: too many memory references for `sub'
..\..\rtl\units\arm-wince\system.s:16: Error: no such instruction: `ldr r0,.Lj7
..\..\rtl\units\arm-wince\system.s:17: Error: no such instruction: `ldr r1,[r0]'

И так далее на каждую строчку...
Что не так?[/code]
divinusproject
новенький
Сообщения: 49
Зарегистрирован: 16.05.2006 08:25:02
Откуда: Барнаул
Контактная информация:

Сообщение divinusproject »

Нужны кроссплатформенные binutils, можно найти на
ftp://ftp.freepascal.org/fpc/contrib/cross/

более подробная информация:
http://wiki.freepascal.org/WinCE_port
Fagot
незнакомец
Сообщения: 5
Зарегистрирован: 14.02.2007 14:52:13

Сообщение Fagot »

divinusproject у меня в комплекте arm-wince-binutils Этого мало?
divinusproject
новенький
Сообщения: 49
Зарегистрирован: 16.05.2006 08:25:02
Откуда: Барнаул
Контактная информация:

Сообщение divinusproject »

arm-wince-binutils вполне достаточно :)

Здесь же все по шагам расписано:
http://wiki.freepascal.org/WinCE_port

То что касается лазаруса здесь:
http://wiki.lazarus.freepascal.org/Windows_CE_Interface

Где именно возникает проблема?
Fagot
незнакомец
Сообщения: 5
Зарегистрирован: 14.02.2007 14:52:13

Сообщение Fagot »

divinusproject
Как лох отвечу - не знаю! :(
Скачал дистр Лазаруса, где, по заверениям, всё уже стоит. Есть arm-wince-binutils, есть сам Лазарус, поставлен svn.
Да доставшемся мне дистре есть бат-файл, насколько я понимаю - для сборки Лазаруса.
Вот сам батник:

Код: Выделить всё

  @echo off
  set x_lazdir=C:\Apps\Lazarus
  set x_armdir=C:\Apps\arm
  set x_fpcsvnrelease=-r 3873
  cls
  echo ------------------------------------------------------------------------
  echo            arm-wince installation for FreePascal and Lazarus
  echo ------------------------------------------------------------------------
  echo You need to prepare the following:
  echo 1. Install the arm-binutils into %x_armdir%
  echo    ftp://ftp.freepascal.org/pub/fpc/contrib/cross/arm-wince-binutils.zip
  echo 2. Install the latest Lazarus daily into %x_lazdir%
  echo    http://www.hu.freepascal.org/lazarus/
  echo 3. Install the latest FreePascal snapshot into %x_lazdir%\pp
  echo    (NOT inside another fpc subfolder as the archive structure suggests)
  echo    ftp://ftp.freepascal.org/pub/fpc/snapshot/v21/source/fpc.zip
  echo OR you need to have svn installed and available.
  echo ------------------------------------------------------------------------
  if NOT EXIST %x_armdir%\arm-wince-ld.exe goto errorarmmissing
  if NOT EXIST %x_lazdir%\startlazarus.exe goto errorlazarusmissing
  if DEFINED APR_ICONV_PATH GOTO nosourcenecessary
  if NOT EXIST %x_lazdir%\pp\compiler\cclasses.pas goto errorfpcmissing
  :nosourcenecessary
  if NOT DEFINED APR_ICONV_PATH GOTO nosvndownload
  echo ------------------------------------------------------------------------
  echo Going to download FPC from SVN now... if this version does not work,
  echo please edit this file and change x_fpcsvnrelease accordingly.
  echo ------------------------------------------------------------------------
  cd %x_lazdir%
  svn checkout %x_fpcsvnrelease% http://svn.freepascal.org/svn/fpc/trunk pp
  ; svn update .
  :nosvndownload
  pause
  echo The necessary files were found, you may now continue.
  pause
  echo ------------------------------------------------------------------------
  echo The cross compiler will now be created...
  echo ------------------------------------------------------------------------
  C:
  cd %x_lazdir%\pp\compiler
  set path=%x_armdir%;%x_lazdir%\pp\bin\i386-win32;%x_lazdir%\pp\bin\arm-wince;%APR_ICONV_PATH%
  make cycle CPU_TARGET=arm OS_TARGET=wince
  echo ------------------------------------------------------------------------
  echo If you don't see any error messages, you may now continue.
  echo ------------------------------------------------------------------------
  pause
  echo Creating the folder %x_lazdir%\pp\bin\arm-wince ...
  mkdir %x_lazdir%\pp\bin\arm-wince
  echo Copying %x_lazdir%\pp\compiler\ppcrossarm.exe
  echo      to %x_lazdir%\pp\bin\arm-wince\ ...
  copy %x_lazdir%\pp\compiler\ppcrossarm.exe %x_lazdir%\pp\bin\arm-wince\
  echo Creating the folder %x_lazdir%\pp\units\arm-wince\rtl ...
  mkdir %x_lazdir%\pp\units\arm-wince\rtl
  echo Copying %x_lazdir%\pp\rtl\units\arm-wince\*.*
  echo      to %x_lazdir%\pp\units\arm-wince\rtl\ ...
  copy %x_lazdir%\pp\rtl\units\arm-wince\*.* %x_lazdir%\pp\units\arm-wince\rtl\
  echo Creating %x_lazdir%\pp\bin\arm-wince\fpc.cfg ...
  echo -Twince > %x_lazdir%\pp\bin\arm-wince\fpc.cfg
  echo -Fu%x_lazdir%\pp\units\arm-wince >> %x_lazdir%\pp\bin\arm-wince\fpc.cfg
  echo -Fu%x_lazdir%\pp\units\arm-wince\* >> %x_lazdir%\pp\bin\arm-wince\fpc.cfg
  echo -Fu%x_lazdir%\pp\units\arm-wince\rtl >> %x_lazdir%\pp\bin\arm-wince\fpc.cfg
  echo -XParm-wince- >> %x_lazdir%\pp\bin\arm-wince\fpc.cfg
  echo -FD%x_armdir% >> %x_lazdir%\pp\bin\arm-wince\fpc.cfg
  echo -FD%x_lazdir%\pp\bin\arm-wince >> %x_lazdir%\pp\bin\arm-wince\fpc.cfg
  echo ------------------------------------------------------------------------
  echo The FCL will now be compiled...
  echo ------------------------------------------------------------------------
  pause
  cd %x_lazdir%\pp\fcl
  make CPU_TARGET=arm OS_TARGET=wince PP=ppcrossarm.exe
  echo Creating the folder %x_lazdir%\pp\units\arm-wince\fcl ...
  echo Copying %x_lazdir%\pp\fcl\units\arm-wince\*.*
  echo      to %x_lazdir%\pp\units\arm-wince\fcl\ ...
  mkdir %x_lazdir%\pp\units\arm-wince\fcl
  copy %x_lazdir%\pp\fcl\units\arm-wince\*.* %x_lazdir%\pp\units\arm-wince\fcl\
  echo ------------------------------------------------------------------------
  echo The LCL will now be compiled...
  echo ------------------------------------------------------------------------
  pause
  cd %x_lazdir%
  make lcl LCL_PLATFORM=wince PP=ppcrossarm.exe CPU_TARGET=arm OS_TARGET=wince
  echo ------------------------------------------------------------------------
  echo Congratulations!
  echo ------------------------------------------------------------------------
  goto EOF
  ;
  :errorarmmissing
  echo ------------------------------------------------------------------------
  echo The ARM files are missing in %x_armdir%!
  echo Please install them, then restart this batch file.
  echo .
  echo You can download these files from
  echo ftp://ftp.freepascal.org/pub/fpc/contrib/cross/arm-wince-binutils.zip
  echo .
  echo If you want to use different paths, please open this file in notepad
  echo and change the second and third line according to your wishes.
  echo ------------------------------------------------------------------------
  goto :EOF
  ;
  :errorlazarusmissing
  echo ------------------------------------------------------------------------
  echo The Lazarus installation is missing in %x_lazdir%!
  echo Please install a Lazarus daily, then restart this batch file.
  echo .
  echo You can download it from
  echo http://www.hu.freepascal.org/lazarus/
  echo .
  echo If you want to use different paths, please open this file in notepad
  echo and change the second and third line according to your wishes.
  echo ------------------------------------------------------------------------
  goto :EOF
  ;
  :errorfpcmissing
  echo ------------------------------------------------------------------------
  echo The FPC files are missing in %x_lazdir%\pp\!
  echo Please install them, then restart this batch file.
  echo Make sure you don't have them in the subfolder fpc, but directly in pp!
  echo .
  echo You can download these files from
  echo ftp://ftp.freepascal.org/pub/fpc/snapshot/v21/source/fpc.zip
  echo .
  echo If you want to use different paths, please open this file in notepad
  echo and change the second and third line according to your wishes.
  echo ------------------------------------------------------------------------
  goto :EOF
  ;
  :EOF
  cd %x_lazdir%
  set x_lazdir=
  set x_armdir=
  set x_fpcsvnrelease=

Если запускать этот бат-файл, то через 5-10 мин. работы команды

Код: Выделить всё

make cycle CPU_TARGET=arm OS_TARGET=wince
(в зависимости от загруженности компа), возникает длинный список ошибок, начало которого я привёл в первом сообщении.
На другом форуме, где я задал тот же вопрос, дали такой ответ:
Фагот
что значит инсталляция? там просто распаковать надо, потом файлы из C:\Apps\arm в C:\Apps\lazarus\pp\bin\arm-wince
и Проект-настройки компилятора-Код поставить
для какой ос - wince
для ЦП - arm

Так тоже попробовал. Однако, в обоих случаях при компиляции проекта выходит сообщение:
The system.ppu was not found in the FPC directory. Make sure fpc is installed correctly and the fpc.cfg points to the rigths directory.
Хотя system.ppu действительно есть и в fpc.cfg путь к нему указан верно...
Вот, теперь помогите, если, конечно, ;), в моей проблеме можно разобраться...
Георгий
незнакомец
Сообщения: 3
Зарегистрирован: 15.12.2007 19:40:27

Сообщение Георгий »

Fagot писал(а):...................................................................................Так тоже попробовал. Однако, в обоих случаях при компиляции проекта выходит сообщение:
The system.ppu was not found in the FPC directory. Make sure fpc is installed correctly and the fpc.cfg points to the rigths directory.
Хотя system.ppu действительно есть и в fpc.cfg путь к нему указан верно...
Вот, теперь помогите, если, конечно, ;), в моей проблеме можно разобраться...

У меня та же ситуация, а нынче скачал Lazarus 2.2.0 и все повторилось под Win32 сомпилит, но под WinCE выдает The system.ppu was not found in the FPC directory. Make sure fpc is installed correctly and the fpc.cfg points to the rigths directory. :(
Аватара пользователя
FedeX
постоялец
Сообщения: 422
Зарегистрирован: 27.03.2006 09:25:34
Откуда: украина, житомир

Сообщение FedeX »

Позавчера приобрёл смарт Samsung i600 (WM 5.1) и тут же вчера попробовал что-нибудь под WinCE скомпилить.
Вся процедура от создания проекта Лазаря до запуска на смартфоне проги с формой и несколькими кнопками заняла минут пять.

До этого у меня стояли:
Lazarus 0.9.24 beta
и доп пакеты:
cross win64
cross wince
компоненты KOL-CE v2.8
Microsoft ActiveSync 4.5

При установке KOL-CE могут возникать ошибки, но их как-правило легко устранить...

При создании проекта по правилам KOL-CE при попытке скомпилировать выдало ошибку, что, мол не может обработать файл KOL-CE.rc . Надо открыть файл KOL.PAS, найти строку {$R KOL-CE.rc} и заменить на {$R KOL-CE.res}. Ну и ещё, конечно, надо зайти в Проект->Параметры компилятора и на вкладке "код" выставить целевую платформу и процессор (WinCE,arm), а на вкладке Связывание->отладка убрать галочку "Выдать номера строк в ошибках времени исполнения" (отлаживать под ХР всё равно не получится, а номера строк, как правило вообще не помогают, зато размер ехе-шника раз в 10 меньше).
Вот. Компиляция. Через ActiveSync кидаем ехе-шник в устройство и запускаем.
Скомпилить LCL проект под WinCE пока не пробовал... :roll:
Юра
постоялец
Сообщения: 163
Зарегистрирован: 25.05.2005 10:20:09
Откуда: Украина, Киев

Сообщение Юра »

FedeX писал(а):При создании проекта по правилам KOL-CE при попытке скомпилировать выдало ошибку, что, мол не может обработать файл KOL-CE.rc . Надо открыть файл KOL.PAS, найти строку {$R KOL-CE.rc} и заменить на {$R KOL-CE.res}.


Или прописать в PATH путь к бинарнику arm-wince-windres.exe

FedeX писал(а):а на вкладке Связывание->отладка убрать галочку "Выдать номера строк в ошибках времени исполнения" (отлаживать под ХР всё равно не получится, а номера строк, как правило вообще не помогают, зато размер ехе-шника раз в 10 меньше).


Можно чудесно отлаживать через АктивСинк с помощью вот этого GDB:
ftp://ftp.freepascal.org/pub/fpc/contri ... -wince.zip
Нужно токо его указать как отладчик в настройках Лазаруса...
Аватара пользователя
FedeX
постоялец
Сообщения: 422
Зарегистрирован: 27.03.2006 09:25:34
Откуда: украина, житомир

Сообщение FedeX »

Можно чудесно отлаживать через АктивСинк с помощью вот этого GDB

пасиба! бум знать :D
Георгий
незнакомец
Сообщения: 3
Зарегистрирован: 15.12.2007 19:40:27

Сообщение Георгий »

FedeX писал(а):Позавчера приобрёл смарт Samsung i600 (WM 5.1) и тут же вчера попробовал что-нибудь под WinCE скомпилить.
Вся процедура от создания проекта Лазаря до запуска на смартфоне проги с формой и несколькими кнопками заняла минут пять....................................

Для чистоты экспиримента анинсталил Lazarus, почистил остатки и перегрузил Win2000ProRus, далее по новой загрузил:
Lazarus 2.2.0
и доп пакеты:
cross wince
cross win64
записал в папку к компиляторам
arm-wince-pe-stub.exe
Microsoft ActiveSync 4.5 уже стоИт
прописал в PATH путь к бинарникам,
зашол в Проект->Параметры компилятора и на вкладке "код" выставил целевую платформу и процессор (WinCE,arm), а на вкладке Связывание->отладка убрал галочку "Выдать номера строк в ошибках времени исполнения" (отлаживать мне пока и не надо, мне бы простую стандартную форму скомпилить охота)
Жму Запуск->Собрать и получаю в окне сообщения: "project1lpr(6,28)Fatal:Can't find unit Intefaces used by project1" :cry:
Юра
постоялец
Сообщения: 163
Зарегистрирован: 25.05.2005 10:20:09
Откуда: Украина, Киев

Сообщение Юра »

Если хочется пользовать LCL, то нужно ее сначала собрать для платформы arm-wince. Как это сделать можно найти тут:
http://wiki.freepascal.org/Windows_CE_Interface
Георгий
незнакомец
Сообщения: 3
Зарегистрирован: 15.12.2007 19:40:27

Сообщение Георгий »

Юра писал(а):Если хочется пользовать LCL, то нужно ее сначала собрать для платформы arm-wince. Как это сделать можно найти тут:
http://wiki.freepascal.org/Windows_CE_Interface

Понятно, опять пришли к тому от чего ушли :cry: , значит рукоязычное население этот вопрос не устаканило и придеться опятьть методом научного тыка, ибо я в аглицком совсем плохой :?
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

Зато будеш ГУРУ, и мы к тебе будем обращаться за советом :D
Юра
постоялец
Сообщения: 163
Зарегистрирован: 25.05.2005 10:20:09
Откуда: Украина, Киев

Сообщение Юра »

Георгий писал(а):Понятно, опять пришли к тому от чего ушли :cry: , значит рукоязычное население этот вопрос не устаканило и придеться опятьть методом научного тыка, ибо я в аглицком совсем плохой :?

А русскоязычную статью с этого сайта почитать лень?
http://www.freepascal.ru/article//freep ... 830083000/
Там есть инфа как собрать LCL средствами Lazarus IDE.

Что касается англоязычной инструкции, то и без особых знаний английского легко можно найти заветную строчку:

Код: Выделить всё

make lcl LCL_PLATFORM=wince PP=ppcrossarm.exe CPU_TARGET=arm OS_TARGET=wince

Если кросс-компилятор установлен правильно, то можно упростить до:

Код: Выделить всё

make lcl LCL_PLATFORM=wince CPU_TARGET=arm OS_TARGET=wince
Ответить