Здравствуйте!
С программированием под 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 в последнее время на убутновском кармике например работает что-то совсем плохо (у меня по крайней мере).
Поэтому как вариант запускать более менее настроенный виртуальный образ в виртуал боксе к примеру, хотя это не удобно, но зато работает как надо.
Госпада. Вот какой вопрос. Вобщем написана программа \"Халоу ворлд\".в эмуляторе под 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, и собрать с ее помощью