Ну вот и пришла нам пора писать под наши телефоны нативный софт
.
Итак, поехали. Для начала нам нужен Linux и Z6 SDK. Linux берем кто какой хочет, желательно 32-битный (64-битного SDK нет, а как он себя поведет под 64-битной ОС - не знаю). Пользователи Windows могут воспользоваться, например, andLinux: http://www.andlinux.org/. Я буду рассматривать Ubuntu. Для Debian или andLinux все то же самое. Разница с другими дистрибутивами - в основном только в способе установки програм. С этого момента я считаю, что у вас уже установлен Linux, настроена сеть, установлены subversion (svn) и ncftp. Если же нет:
Небольшое введение насчет Linux я написал, дабы избежать пустых вопросов
SDK берем здесь:
Не забывем иногда делать
Я, например, иногда кое-что изменяю для совместимости с Е2. Патчи и фиксы, а также дополнения приветствуются!
Кто не знает что такое SVN - тем в гугл.
Временно сабж лежит здесь: http://depositfiles.com/files/7781186 и здесь: http://narod.ru/disk/2474622000/arm-eabi.tar.gz.html
Теперь рассмотрим на примере
Возьмем, например, Z6SnesX (эмулятор SNES для Z6, будет выложен позже. Ребят, GPL - он и в Африке GPL, но кто скомпилит - не выкладывайте, имейте совесть! Дождитесь моего релиза)
Рассмотрим немного порезаный Makefile:
Для компиляции нужно лишь заменить переменную TOOLPREFIX.
Подробнее рассмотрим цель install: она автоматически заливает все на телефон
через ftp и зависит от целей компиляции. То есть, если выполнить make install - програма скомпилируется (если нужно) и установится на телефон в UPLOAD_PATH. Для этого нужна утилита ncftpput - установите ее с помощью менеджера пакетов своего дистрибутива.
Запуск програмы
Для запуска програмы подключаемся к телефону через telnet, cd в нужную папку и запускаем
. Например,
Имейте ввиду, перед запуском програм из telnet нужно установить необходимые переменные окружения! Для этого скопируем прямо в консоль содержимое файла /etc/initservices/services/ezxenv.sh
Для Z6 это:
Для V8 и других не знаю
. Кто скажет - с меня плюс. Хотя скорее всего такой же.
Итак, запускаем и вуаля! - видим на экране телефона свою програму
. Или не видим. Или видим Segmentation fault - это уж кто как напишет
.
Удачи!
Разбор библиотек
Читаем здесь: https://ezx.darktech.org/wiki/ReverseSo
Флуд и оффтоп наказываю! Уже трое людей получило по -2 с удалением сообщения
На вопросы отвечаю
Сообщение отредактировал Abram - 8.9.2008, 10:49

Итак, поехали. Для начала нам нужен Linux и Z6 SDK. Linux берем кто какой хочет, желательно 32-битный (64-битного SDK нет, а как он себя поведет под 64-битной ОС - не знаю). Пользователи Windows могут воспользоваться, например, andLinux: http://www.andlinux.org/. Я буду рассматривать Ubuntu. Для Debian или andLinux все то же самое. Разница с другими дистрибутивами - в основном только в способе установки програм. С этого момента я считаю, что у вас уже установлен Linux, настроена сеть, установлены subversion (svn) и ncftp. Если же нет:
Код
sudo apt-get install subversion ncftp
Небольшое введение насчет Linux я написал, дабы избежать пустых вопросов

SDK берем здесь:
Код
svn co https://ezx.darktech.org/svn/trunk/arm-eabi
Не забывем иногда делать
Код
svn up
Я, например, иногда кое-что изменяю для совместимости с Е2. Патчи и фиксы, а также дополнения приветствуются!

Кто не знает что такое SVN - тем в гугл.
Временно сабж лежит здесь: http://depositfiles.com/files/7781186 и здесь: http://narod.ru/disk/2474622000/arm-eabi.tar.gz.html
Теперь рассмотрим на примере
Возьмем, например, Z6SnesX (эмулятор SNES для Z6, будет выложен позже. Ребят, GPL - он и в Африке GPL, но кто скомпилит - не выкладывайте, имейте совесть! Дождитесь моего релиза)
Код
svn co https://fig.vam/svn/ne/dam
Рассмотрим немного порезаный Makefile:
Код
TOOLPREFIX:= /home/abram/z6/arm-eabi
#TOOLPREFIX:= /arm-eabi
#Remember to set your own TOOLPREFIX.
QTDIR := $(TOOLPREFIX)/lib/qt-2.3.8
EZXDIR := $(TOOLPREFIX)/lib/ezx-z6
UPLOAD_PATH := /mmc/mmca1/bin/
CC = $(TOOLPREFIX)/bin/arm-linux-gnueabi-gcc
CXX = $(TOOLPREFIX)/bin/arm-linux-gnueabi-g++
LD = $(TOOLPREFIX)/bin/arm-linux-gnueabi-g++
CFLAGS = -pipe -Wall -W -O2 -DNO_DEBUG $(INCPATH)
CXXFLAGS= -pipe -DQWS -fno-exceptions -fno-rtti -Wall -W -O2 -DNO_DEBUG $(INCPATH)
INCPATH = -I$(QTDIR)/include -I$(EZXDIR)/include -I $(TOOLPREFIX)/arm-linux-gnueabi/include
LDFLAGS = -s
LINK = $(TOOLPREFIX)/bin/arm-linux-gnueabi-gcc
LFLAGS =
LIBS = $(SUBLIBS) -L$(TOOLPREFIX)/arm-linux-gnueabi/lib -L$(QTDIR)/lib -L$(EZXDIR)/lib -lm -lqte-mt -lezxpm -ljpeg -lezxappbase -lezxtapi-xscale-r -llog_util -llighting
MOC = $(QTDIR)/bin/moc
UIC = $(QTDIR)/bin/uic
TAR = tar -cf
GZIP = gzip -9f
...пропустим...
install: $(TARGETS)
ncftpput -u root -p "" 192.168.16.2 $(UPLOAD_PATH) $(TARGETS)
#TOOLPREFIX:= /arm-eabi
#Remember to set your own TOOLPREFIX.
QTDIR := $(TOOLPREFIX)/lib/qt-2.3.8
EZXDIR := $(TOOLPREFIX)/lib/ezx-z6
UPLOAD_PATH := /mmc/mmca1/bin/
CC = $(TOOLPREFIX)/bin/arm-linux-gnueabi-gcc
CXX = $(TOOLPREFIX)/bin/arm-linux-gnueabi-g++
LD = $(TOOLPREFIX)/bin/arm-linux-gnueabi-g++
CFLAGS = -pipe -Wall -W -O2 -DNO_DEBUG $(INCPATH)
CXXFLAGS= -pipe -DQWS -fno-exceptions -fno-rtti -Wall -W -O2 -DNO_DEBUG $(INCPATH)
INCPATH = -I$(QTDIR)/include -I$(EZXDIR)/include -I $(TOOLPREFIX)/arm-linux-gnueabi/include
LDFLAGS = -s
LINK = $(TOOLPREFIX)/bin/arm-linux-gnueabi-gcc
LFLAGS =
LIBS = $(SUBLIBS) -L$(TOOLPREFIX)/arm-linux-gnueabi/lib -L$(QTDIR)/lib -L$(EZXDIR)/lib -lm -lqte-mt -lezxpm -ljpeg -lezxappbase -lezxtapi-xscale-r -llog_util -llighting
MOC = $(QTDIR)/bin/moc
UIC = $(QTDIR)/bin/uic
TAR = tar -cf
GZIP = gzip -9f
...пропустим...
install: $(TARGETS)
ncftpput -u root -p "" 192.168.16.2 $(UPLOAD_PATH) $(TARGETS)
Для компиляции нужно лишь заменить переменную TOOLPREFIX.
Подробнее рассмотрим цель install: она автоматически заливает все на телефон

Запуск програмы
Для запуска програмы подключаемся к телефону через telnet, cd в нужную папку и запускаем

Код
./Z6SnesX
Имейте ввиду, перед запуском програм из telnet нужно установить необходимые переменные окружения! Для этого скопируем прямо в консоль содержимое файла /etc/initservices/services/ezxenv.sh
Для Z6 это:
Код
#! /bin/sh
#set up environment
export QTDIR=/usr/lib/ezx
export LD_LIBRARY_PATH=$QTDIR/lib:/usr/lib:/lib:/usr/language/vui/english/lib:/usr/language/vui/mandarin/lib:/usr/language/vui/common/lib:/usr/local/lib
export LD_HWCAP_MASK=
export EZX_PLUGINS_DIR=/hatcreek/plugins
# font path
if test -f /usr/language/fonts/fontdef.cfg;
then
export EZX_RES_FONT_PATH=/usr/language/fonts
else
export EZX_RES_FONT_PATH=$QTDIR/lib/fonts
fi
# slidertone path
export EZX_RES_SOUNDS_SLIDERTONE_PATH=/usr/data_resource/sound/slider_tones
# icon path
export EZX_RES_ICON_PATH=/usr/data_resource/icon
# string path
export EZX_RES_STRING_PATH=/usr/language/string
export EZX_NATIVE_APP_PATH=/usr/SYSqtapp
export EZX_PRELOAD_APP_PATH=/usr/data_resource/preloadapps
export AM_SYS_STATE_SHM_PATH=/usr/SYSqtapp/am
# per LIBll14192, set LOCPATH
export LOCPATH=/usr/language/string
export PREF_LANGUAGE_PATH=${LOCPATH}
export EZX_LANG=/usr/language/
export EZX_LOCAL_PATH=/ezxlocal/
export EZX_LOCAL_DOWNLOAD_PATH=${EZX_LOCAL_PATH}download/
export EZX_LOCAL_APP_WRITE_PATH=/ezxlocal/download/appwrite
export EZX_APP_WRITE_PATH=/ezxlocal/download/appwrite
export LJ_DATA_VISIBLE=/ezxlocal/download/mystuff/.system
export LJ_DATA_PRIVATE=/ezxlocal/download/appwrite
export LJ_CONFIG=/ezxlocal/download/appwrite
export TPA_HOME=${EZX_LOCAL_PATH}
#sound path
export EZX_RES_SOUNDS_PATH=/usr/data_resource/sound
export EZX_RES_SOUNDS_UISOUNDS_PATH=/usr/data_resource/sound/ui_sounds
export EZX_RES_SOUNDS_RINGTONES_PATH=/usr/data_resource/sound/ringtones
#dm
export dm_setting_root=${EZX_APP_WRITE_PATH}/setup
export dm_setting_plugin=/usr/lib/ezx/lib/dm_plugin
export EZX_EXTRA_SYS_DATA_PATH='/ezxlocal/.system/'
#java
export J2ME_SECURITY_DIR='/ezxlocal/download/java'
export JAVA_HOME_CARD1='/mmc/mmca1/.system/java'
export JAVA_HOME_CARD2='/mmc/mmcb1/.system/java'
export J2ME_SYSDATA_DIR=${LJ_DATA_VISIBLE}/java
export JAVA_HOME_FLASH=${LJ_DATA_VISIBLE}/java
export MIDP_SYSDIR='/ezx_user/download/appwrite/java'
export J2ME_POLICY_DIR='/usr/securesetup'
export MYSTUFF_DATA_PATH='/ezxlocal/download/mystuff/'
#browser
export BROWSER_FS_ROOT=/ezxlocal/download/browser
export FLASH_MOUNT_PATH=/ezxlocal
export EZX_INSTALLED_QT_PATH=/ezxlocal
export MYSTUFF_DATA_PATH=/ezxlocal/download/mystuff/
#set up environment
export QTDIR=/usr/lib/ezx
export LD_LIBRARY_PATH=$QTDIR/lib:/usr/lib:/lib:/usr/language/vui/english/lib:/usr/language/vui/mandarin/lib:/usr/language/vui/common/lib:/usr/local/lib
export LD_HWCAP_MASK=
export EZX_PLUGINS_DIR=/hatcreek/plugins
# font path
if test -f /usr/language/fonts/fontdef.cfg;
then
export EZX_RES_FONT_PATH=/usr/language/fonts
else
export EZX_RES_FONT_PATH=$QTDIR/lib/fonts
fi
# slidertone path
export EZX_RES_SOUNDS_SLIDERTONE_PATH=/usr/data_resource/sound/slider_tones
# icon path
export EZX_RES_ICON_PATH=/usr/data_resource/icon
# string path
export EZX_RES_STRING_PATH=/usr/language/string
export EZX_NATIVE_APP_PATH=/usr/SYSqtapp
export EZX_PRELOAD_APP_PATH=/usr/data_resource/preloadapps
export AM_SYS_STATE_SHM_PATH=/usr/SYSqtapp/am
# per LIBll14192, set LOCPATH
export LOCPATH=/usr/language/string
export PREF_LANGUAGE_PATH=${LOCPATH}
export EZX_LANG=/usr/language/
export EZX_LOCAL_PATH=/ezxlocal/
export EZX_LOCAL_DOWNLOAD_PATH=${EZX_LOCAL_PATH}download/
export EZX_LOCAL_APP_WRITE_PATH=/ezxlocal/download/appwrite
export EZX_APP_WRITE_PATH=/ezxlocal/download/appwrite
export LJ_DATA_VISIBLE=/ezxlocal/download/mystuff/.system
export LJ_DATA_PRIVATE=/ezxlocal/download/appwrite
export LJ_CONFIG=/ezxlocal/download/appwrite
export TPA_HOME=${EZX_LOCAL_PATH}
#sound path
export EZX_RES_SOUNDS_PATH=/usr/data_resource/sound
export EZX_RES_SOUNDS_UISOUNDS_PATH=/usr/data_resource/sound/ui_sounds
export EZX_RES_SOUNDS_RINGTONES_PATH=/usr/data_resource/sound/ringtones
#dm
export dm_setting_root=${EZX_APP_WRITE_PATH}/setup
export dm_setting_plugin=/usr/lib/ezx/lib/dm_plugin
export EZX_EXTRA_SYS_DATA_PATH='/ezxlocal/.system/'
#java
export J2ME_SECURITY_DIR='/ezxlocal/download/java'
export JAVA_HOME_CARD1='/mmc/mmca1/.system/java'
export JAVA_HOME_CARD2='/mmc/mmcb1/.system/java'
export J2ME_SYSDATA_DIR=${LJ_DATA_VISIBLE}/java
export JAVA_HOME_FLASH=${LJ_DATA_VISIBLE}/java
export MIDP_SYSDIR='/ezx_user/download/appwrite/java'
export J2ME_POLICY_DIR='/usr/securesetup'
export MYSTUFF_DATA_PATH='/ezxlocal/download/mystuff/'
#browser
export BROWSER_FS_ROOT=/ezxlocal/download/browser
export FLASH_MOUNT_PATH=/ezxlocal
export EZX_INSTALLED_QT_PATH=/ezxlocal
export MYSTUFF_DATA_PATH=/ezxlocal/download/mystuff/
Для V8 и других не знаю

Итак, запускаем и вуаля! - видим на экране телефона свою програму


Удачи!
Разбор библиотек
Читаем здесь: https://ezx.darktech.org/wiki/ReverseSo
Флуд и оффтоп наказываю! Уже трое людей получило по -2 с удалением сообщения
На вопросы отвечаю

Сообщение отредактировал Abram - 8.9.2008, 10:49