CHDK Wiki
Zdravko (talk | contribs)
(Final translation)
Zdravko (talk | contribs)
m (Added heading)
Line 1: Line 1:
  +
=Компилиране на CHDK под Windows=
 
{|align=right
 
{|align=right
 
|__TOC__
 
|__TOC__

Revision as of 09:25, 18 June 2007

Компилиране на CHDK под Windows

За да компилирате CHDK под Windows ще ви трябва Unix среда, като например Cygwin или Mingw/MSys. Освен това се предполага, че притежавате достатъчно умения за работа командната конзола на Windows.

Работната среда

Съществува 'готова за използване' среда, която можете да изтеглите оттук.

Настройки

Средата

CHDK Path

Променливата PATH

  • Създайте папка CHDK. Например D:\CHDK.
  • Създайте папка за работната среда, например D:\CHDK\gcc.
  • Разархивирайте пакета със средата в тази папка.
  • Добавете папката с изпълнимите файлове в променливата на средата PATH.
Отворете 'Start' менюто -> 'Control Panel' -> 'System', страница 'Advanced', бутон 'Environment Variables'. Използвайте User Variables за модифициране на променливата PATH. Ако тази променлива не съществува, създайте я и й присвоете стойност 'D:\CHDK\gcc\bin'. Ако вече съществува променлива PATH, тогава добавете стойността ';D:\CHDK\gcc\bin' (не забравяйте разделителя ';' (точка и запетая). Запазете така направените настройки.
Забележка
Всички променливи в Windows не са чувствителни към малки и големи букви (case insensitive). Така че, ако имате променлива 'Path' или 'path' или 'pAtH' – модифицирайте тази, която съществува. Не създавайте нова с главни букви!

Програмният код

  • Създайте работна директория, например D:\CHDK\src.
  • Свалете последната версия на изходния код от SVN хранилището (repository): tools.assembla.com в създадената в предната стъпка директория.
Можете да използвате SVN клиент за Windows или просто да изтеглите кода като ZIP архив директно от tools.assembla.com.
Ако вземете кода като ZIP файл, отворете го и разархивирайте съдържанието му в D:\CHDK\src\. После проверете дали съществува папка 'bin' (т.е. D:\CHDK\src\branches\grand\bin\). Ако я няма, създайте празна на това място.
Ако смятате да участвате в разработката или правите собствена версия, която искате да поддържате актуална, за предпочитане е да ползвате SVN клиент, тъй като той има възможност да разрешава конфликти в кода и да взима/слага промените от/в SVN хранилището. SVN пътят до кода на CHDKе https://tools.assembla.com/svn/chdk. Ако използвате, със следната команда можете да вземете кода от SVN архива:
svn checkout http://tools.assembla.com/svn/chdk/trunk chdk

Процес на компилация

Влезте в коренната директория на изходния код (т.е. D:\CHDK\src\branches\grand\). После пишете:

gmake fir

По подразбиране, CHDK се компилира само за A610, версия на фирмуера 1.00e. Ако искате да компилирате за друга камера, просто изпълнете 'gmake' с аргументи PLATFORM и PLATFORMSUB. Например:

 gmake PLATFORM=a620 PLATFORMSUB=100f fir

За да ксмпилирате CHDK за всички камери, напишете:

 gmake batch-zip

Известни проблеми и решения за тях

Конфликти с продукти на Borland

Ако имате компилатори на Borland в променливата PATH, това може да доведе до изпълнение на грешни двоични файлове, които имат същите имена като тези от работната среда на CHDK. Например:

>> Entering to platform/a620/sub/100f
boot.c -> boot.o
stubs_min.S -> stubs_min.o
boot.c -> stubs_auto.S
stubs_auto.S -> stubs_auto.o
-> stubs_entry.S
CAUTION! 'stubs_entry.S' is not uptated due to target firmware binary not found!
Touch Version 4.2 Copyright (c) 1998 Borland International

ERROR! There are unresolved addresses in 'stubs_entry.S' (a620-100f) for the following names:
File stubs_entry.S:
free
Please, add them into 'stubs_entry_2.S' manually!

За да избегнете подобна ситуациа, просто изолирайте продуктите на Borland (т.е. модифицирайте PATH).

Недефиниран указател към `sub_...'

Внезапно или след обновяване на кода, започва да се появява следното съобщение при компилация:

...
-> main.elf
../platform/a610/sub/100e/libplatformsub.a(boot.o): In function `h_usrInit':
boot.c:(.text+0x4): undefined reference to `sub_FFC019BC'
boot.c:(.text+0x10): undefined reference to `sub_FFEB737C'
boot.c:(.text+0x14): undefined reference to `sub_FFEA3A54'
...

За да отстраните този проблем, изтрийте файла 'platform/XXX/sub/YYY/stubs_auto.S' и го издърпайте отново от хранилището на кода.