Графика в Maemo

Здравствуйте!
С программированием под Unix систему я имею дело в первый раз, поэтому постоянно сталкиваюсь с трудностями. Кое как поставила ScratchBox и SDK, однако запустить что-то в UI framework получается только если собирать по 86 архитектуру, под ARM запустить не удается, так и должно быть или у меня просто не получается? Собрала консольное приложение под ARM, но не получается его на N810 запустить, либо нет прав, либо еще что-нибудь(( Запускать пытаюсь .elf файл, что я не правильно делаю?)
И наконец, по теме)
Так случилось, что мне необходимо под maemo написать графическое приложение с реализацией спрайтов, на с++, условием является то, что нельзя использовать никакие сторонние библиотеки, не мог бы мне кто-нибудь подсказать или дать ссылки на документацию (желательно на русском) и примеры по этой теме, буду очень признательна! Чувствую, что сама без помощи буду ковыряться в этом очень долго(
Заранее все огромное спасибо)
сборка x86 - для эмулятора, ARM - для устройства. У меня нет и не было дивайса, так что подсказать, как запустить на устройстве, не могу. Для облегчения разработки лучше установить Esbox, может через него будет проще отлажить на таблетке.
далее, что имеется в виду под сторонними библиотеками? libSDL - встроена в маемо, она является сторонней? Фактически, она является стандартом для разработки игр под линукс (по моему личному мнению). Если её нельзя использовать тогда создавай приложение gtk+ с пустым экраном, и рисуй в нём. Как это делается, я тоже, к сожалению, не знаю. Нужно гуглить.
wl:далее, что имеется в виду под сторонними библиотеками?

на пример, OpenGL

Наверно не очень понятно, что я хочу. Когда я реализовывала что-то подобное под windiws, я просто писала в bitmap и потом скидывала его на экран. Нужно сделать нечто подобное, но под maemo/
используй libSDL: http://libsdl.org - там можно скачать демки и доки
wl:используй libSDL: http://libsdl.org - там можно скачать демки и доки

спасибо, скорее всего мне это подойдет)
Scratchbox - это среда для разработки и отладки приложений под Маемо. Начать надо с того, что пойти на http://maemo.org и там, в разделе для дежелоперов Вы найдёте ответы на множество своих вопросов. И руководства и примеры.

Скратчбох заточен для создания исходных текстов. И именно поътому в нём 2 модели. X86 - для запуска под эммулятотом. ARMEL - для исполнения на устройстве. Но абсолютно неправильно делать просто бинарник. Делайте сразу дебиановский пакет. С зависимостями, правами и размещениями.

Прав у вас, скорей всего, не хватает потому, что файлу надо дать аттрибут \"исполняемый\" уже на таблетке, и при этом делать это надо в разделе, который не фат32.

Ну и напоследок. Понятие \"стандартная\" библиогека на Маемо очень условно. Строя программу в пакете Вы обязательно должны задать не только зависимость от нужных Вам библиотек, но и на какую версию Вы ориентируетесь.
На Qt4, вроде, можно неплохо рисовать и оно вполне стандартное
nico:на пример, OpenGL

Под маемо4 этого нет насколько мне известно, на маемо5 возможно и можно.
И ещё скрэтбокс для маемо4 в последнее время на убутновском кармике например работает что-то совсем плохо (у меня по крайней мере).
Поэтому как вариант запускать более менее настроенный виртуальный образ в виртуал боксе к примеру, хотя это не удобно, но зато работает как надо.
на сайте IBM есть немножко примеров на русском : http://www.ibm.com/search/?en=utf&s=adv&lang=ru&cc=ru&qadv=maemo&qt=all&co=ru&lo=ru&hpp=100&ibm-submit=%D0%98%D1%81%D0%BA%D0%B0%D1%82%D1%8C
Госпада. Вот какой вопрос. Вобщем написана программа \"Халоу ворлд\".в эмуляторе под x86 запускается. Собран бинарный файл под АРМ. Перекинула на Nokia. там через консоль скопировала в mmc1,там sudo chmod +x file. По идее должен заработать.Вызываю ./file и всё,высыпается следущая ошибка:

file: error while loading shared libraries: libgio-2.0.so.0: cannot open shared object file: No search file or directory

Как я понимаю нету библиотеки??
Как вылечить(где взять)?может что то не так делаю??
Раз у вас бинарник собрался, то библиотека в скрэтчбоксе стоит.
Делаете так: dpkg -S libgio-2.0.so.0 и увидите в каком пакете оно живет.
В данном конкретном случае это будет libglib2.0-0, если дело идет о Fremantle.
Только на девайсе glib должен быть, куда же без него.
От него куча всего на девайсе зависит:
# apt-cache rdepends libglib2.0-0 |wc -l
680
Покажите что вам говорит ldd <ваш бинарник> под скрэтчбоксом и на девайсе?
Wall:Покажите что вам говорит ldd <ваш бинарник> под скрэтчбоксом и на девайсе?

На КПК:
-sh: ldd: not found
На эмуляторе, если ARM:
libc.so.6 => lib/libc.so.6
/lib/lb-linux.so.3 => /lib/ld-linux.so.3
Ребята, Очень нужна помощь!
Есть проект написанный на с++ с использованием libSDL, как можно его собрать под убунтой и под maemo?
Срочно нужно сделать, а у меня не получается((
Буду очень благодарна!
nico:На эмуляторе, если ARM:
libc.so.6 => lib/libc.so.6
/lib/lb-linux.so.3 => /lib/ld-linux.so.3

Хм. слинкован только с самым необходимым. \"hello, world\", что ли?
При запуске этого бинарника вряд ли у вас попросят libgio-2.0.so.0.
Что-то тут не так.
nico:Ребята, Очень нужна помощь!
Есть проект написанный на с++ с использованием libSDL, как можно его собрать под убунтой и под maemo?
Срочно нужно сделать, а у меня не получается((
Буду очень благодарна!


Ну давайте сорцы, соберу. Или какая помощь нужна?
Вообщем и на maemo и на эмулятор я поставила библиотеки libsdl*, потом на эмуляторе собрала gcc -Wall `sdl-config --libs` -g sdlhell.c
перенесла на КПК? но там не запускается illegal instruction
Это я еще вчера понял, с первого раза.
Чем помочь-то? Пожалуйста, сформулируйте ваши желания поконкретнее. Я не люблю догадываться.

PS: Хотя нет. Вчера вы писали о другой ошибке. Значит ту победили?

Что говорит команда file на ваш бинарник?
Должна говорить что-нибудь такое:
ELF 32-bit LSB executable, ARM, version 1 (SYSV), for GNU/Linux 2.6.14, dynamically linked (uses shared libs), not stripped
Да, прежнюю ошибку я победила, путем установки дополнительных библиотек.
Таким образом, консольные программы на КПК запускаются нормально (по крайней мере hello world).
Теперь я пытаюсь собрать запустить простую программу с участием SDL, на Х86 все хорошо собирается и запускается, на ARM, тоже собирается без ошибок, но только при запуске на КПК выдает ошибку: illegal instruction
Команда file на КПК дает следующий результат:
sh: file: not found
P.S. а нельзя с тобой в аське пообщаться?
Нет у меня аськи, сорри.

Для \"hello, world\" никаких особых библиотек не нужно, только libc, а она на любой UNIX системе установлена. Так что подумай, что ты еще делала для того, чтобы программа заработала. Потому что мне кажется, что \"file: error while loading shared libraries: libgio-2.0.so.0\" - это не про 'hello, world'.
Это может помочь решить текущую проблему.
Команду file запусти в scratchbox. Кроме того покажи результат вот этой конструкции:
grep ^SBOX_CROSS_GCC_NAM /targets/fremantle-armel.config
тоже под скрэтчбоксом.
Проблема с Hello world решилась установкой библиотеки Maemo C++ Development V2.0.1 http://maemo.org/downloads/product/OS2008/maemo-cplusplus-device-env/

[sbox-FREMANTLE_ARMEL: ~] > file a.out
a.out: ELF 32-bit LSB executable, ARM, version 1 (SYSV), for GNU/Linux 2.6.14, dynamically linked (uses shared libs), not stripped

[sbox-FREMANTLE_ARMEL: ~] > grep ^SBOX_CROSS_GCC_NAM /targets/FREMANTLE_ARMEL.config
SBOX_CROSS_GCC_NAME=cs2007q3-glibc2.5-arm7
Вроде все верно. Надеюсь, что 'КПК' - это Nokia N900?
Сейчас попробую что-нибудь SDL-ное собрать, раз ты свое не хочешь показывать.
Wall:Вроде все верно. Надеюсь, что 'КПК' - это Nokia N900?

эм... вообще то нет, N810

Вот код, который пытаюсь собрать:

#include \"SDL/SDL.h\"
int main( int argc, char* args[] )
{
SDL_Surface* screen = NULL;
//Start SDL
SDL_Init( SDL_INIT_EVERYTHING );
screen = SDL_SetVideoMode( 800, 480, 32, SDL_SWSURFACE );
SDL_Delay( 2000 );
SDL_Quit();
return 0;
}
Тогда понятно. тебе нужно собирать не под Fremantle, а под Diablo.
Fremantle - это для N900, а в ней другой процессор. Отсюда и illegal instruction.
Wall:Тогда понятно. тебе нужно собирать не под Fremantle, а под Diablo.
Fremantle - это для N900, а в ней другой процессор. Отсюда и illegal instruction.

А как это сделать? Можно какой нить мануал может?
И как проще всего поменять target ?)
Нужно поставить Diablo SDK. Ты поставила Fremantle SDK.
Мануалы все здесь:
http://maemo.org/development/
В частности для Diablo здесь:
http://maemo.org/maemo_release_documentation/maemo4.1.x/

В общем-то большинство из того, что нужно у тебя уже стоит, даже лишнее есть.
Но, думаю, что снести Fremantle SDK и поставить Diablo SDK для тебя будет быстрее, чем разбираться как превратить одно в другое.
Мануал по установке Diablo SDK здесь:
http://repository.maemo.org/stable/4.1.2/INSTALL.txt
А у вас Diablo SDK не стоит?
Просто у меня медленный интернет, ставить я буду это очень долго и сомневаюсь что с первого раза заработает(
Стоит. Если у меня заработает тебе от этого полегчает :) ?
Wall:Стоит. Если у меня заработает тебе от этого полегчает :) ?

Вопрос в другом, у меня есть проект (игра, задание по учебе), она у меня почти написана в Visual Studio, на с++ с использованием SDL, основная цель, это заставить ее наработать на КПК, то есть если вам удастся собрать проект и он заработает у меня на КПК, я буду безумна счастлива)
Не заметил как мы на вы обратно перешли, извините.

Так о чем это мы? Ах да, о безумном счастье :)
Я где-то 6 часов назад написал следующее:
\"Ну давайте сорцы, соберу.\"
В переводе на понятный язык с программисткого слэнга это означает:
\"Ну давайте исходные тексты ваших программ, соберу\"
Так что ваше безумное счастье могло бы наступить на 6 часов раньше, если бы я правильно сориентировался.

Проблема немного осложняется тем, что это все вы на винде делаете. так что немедленного результата не обещаю, но попробую. Попытка - не пытка :)
Wall:Так что ваше безумное счастье могло бы наступить на 6 часов раньше, если бы я правильно сориентировался.

Да я все еще 6 часов назад поняла) просто я как настоящий студент все делаю в последнюю ночь и сейчас правлю оставшиеся косметические дефекты. А как мая винда осложнит процесс? Мне немного осталось поправить) И конечно же завтра днем это надо показать преподавателю))
Дак воот) Может я как закончу, пришлю на почту? Или если вы еще спать не собираетесь, так скажу?
Ну вообще-то уже поздно и, честно говоря, я спать собирался.
Давайте так - кидайте прямо сюда чего есть, я хоть начну. А там уж как получится.
Там не один файл и некоторые достаточно большие, сомневаюсь, что суда можно столько постить) А на почту нельзя?
Заархивируйте и архив к сообщению приаттачте. Не думаю, что вы там уж так много насочиняли.
Хорошо, сейчас сделаю
У вас осталось 7 минут. Если не успеете - тогда уже утром.
Вот
Такой архив нормально?
Не правильный архив случайно приаттачила(
вот правильный
Да, нормально.
Собрался, но не работает. Сегфолтит:
Fatal signal: Segmentation Fault (SDL Parachute Deployed)
Segmentation fault

У вас-то хоть запускается? Не падает?
В винде все хорошо работает
google Говорит, что это возможно потому что я не все surfaces освобождаю, сейчас попробую переделать
Падает в методе Field::draw при вызове drawPoint(x, y); при x = 1 y = 23.
Я пошел спать. Видимо сегодня не судьба это победить. До завтра. Будут идеи - пишите сюда.
Wall:Падает в методе Field::draw при вызове drawPoint(x, y); при x = 1 y = 23.

хм... специально в студии останавливалась на этом месте, все нормально отрабатывает, может все же surface?
собрала под эмулятор 386, все запускается и работает без ошибок
Ну что, еще актуально или уже поздно?
Wall:Ну что, еще актуально или уже поздно?

Спасибо за помощь, но уже не актуально, пришлось показывать на эмуляторе(
Дык, доделайте ж уже игрушку, зачем останавливаться, раз большая часть работы позади?
Kroll:Дык, доделайте ж уже игрушку, зачем останавливаться, раз большая часть работы позади?

Дак она доделана, необходимо, как я понимаю, установить новое SDK, и собрать с ее помощью