(Final translation) |
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. Например 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' и го издърпайте отново от хранилището на кода.