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

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

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

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

Сообщение Fagot » 15.02.2007 10:39:08

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

Сообщение Fagot » 16.02.2007 16:59:48

Ну раз никто не помогает... ;)
Скачал другой дистр Лазаруса, где, вроде бы всё для компиляции на 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]
Fagot
незнакомец
 
Сообщения: 5
Зарегистрирован: 14.02.2007 15:52:13

Сообщение divinusproject » 17.02.2007 10:16:08

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

более подробная информация:
http://wiki.freepascal.org/WinCE_port
divinusproject
новенький
 
Сообщения: 49
Зарегистрирован: 16.05.2006 08:25:02
Откуда: Барнаул

Сообщение Fagot » 19.02.2007 10:15:36

divinusproject у меня в комплекте arm-wince-binutils Этого мало?
Fagot
незнакомец
 
Сообщения: 5
Зарегистрирован: 14.02.2007 15:52:13

Сообщение divinusproject » 20.02.2007 11:28:47

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

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

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

Где именно возникает проблема?
divinusproject
новенький
 
Сообщения: 49
Зарегистрирован: 16.05.2006 08:25:02
Откуда: Барнаул

Сообщение Fagot » 20.02.2007 12:16:58

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 путь к нему указан верно...
Вот, теперь помогите, если, конечно, ;), в моей проблеме можно разобраться...
Fagot
незнакомец
 
Сообщения: 5
Зарегистрирован: 14.02.2007 15:52:13

Сообщение Георгий » 15.12.2007 21:39:11

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. :(
Георгий
незнакомец
 
Сообщения: 3
Зарегистрирован: 15.12.2007 20:40:27

Сообщение FedeX » 16.12.2007 15:57:59

Позавчера приобрёл смарт 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:
Аватара пользователя
FedeX
постоялец
 
Сообщения: 422
Зарегистрирован: 27.03.2006 09:25:34
Откуда: украина, житомир

Сообщение Юра » 16.12.2007 16:57:24

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
Нужно токо его указать как отладчик в настройках Лазаруса...
Юра
постоялец
 
Сообщения: 163
Зарегистрирован: 25.05.2005 10:20:09
Откуда: Украина, Киев

Сообщение FedeX » 16.12.2007 17:14:38

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

пасиба! бум знать :D
Аватара пользователя
FedeX
постоялец
 
Сообщения: 422
Зарегистрирован: 27.03.2006 09:25:34
Откуда: украина, житомир

Сообщение Георгий » 17.12.2007 19:12:51

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:
Георгий
незнакомец
 
Сообщения: 3
Зарегистрирован: 15.12.2007 20:40:27

Сообщение Юра » 17.12.2007 19:53:46

Если хочется пользовать LCL, то нужно ее сначала собрать для платформы arm-wince. Как это сделать можно найти тут:
http://wiki.freepascal.org/Windows_CE_Interface
Юра
постоялец
 
Сообщения: 163
Зарегистрирован: 25.05.2005 10:20:09
Откуда: Украина, Киев

Сообщение Георгий » 17.12.2007 20:37:29

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

Понятно, опять пришли к тому от чего ушли :cry: , значит рукоязычное население этот вопрос не устаканило и придеться опятьть методом научного тыка, ибо я в аглицком совсем плохой :?
Георгий
незнакомец
 
Сообщения: 3
Зарегистрирован: 15.12.2007 20:40:27

Сообщение alexs » 17.12.2007 22:26:36

Зато будеш ГУРУ, и мы к тебе будем обращаться за советом :D
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Сообщение Юра » 17.12.2007 22:43:45

Георгий писал(а):Понятно, опять пришли к тому от чего ушли :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
Юра
постоялец
 
Сообщения: 163
Зарегистрирован: 25.05.2005 10:20:09
Откуда: Украина, Киев

След.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Majestic-12 [Bot] и гости: 0

Рейтинг@Mail.ru