Создать ответ 
 
Рейтинг темы:
  • Голосов: 1 - Средняя оценка: 5
  • 1
  • 2
  • 3
  • 4
  • 5
Вапрос
Автор Сообщение
Rio Не на форуме
Продвинутый
***

Сообщений: 371
Зарегистрирован: 04.04.2009
Рейтинг: 2
Сказал спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщ.
Сообщение: #21
RE: Вапрос
Не компилится.
36: missing separator
(в этой строке: $(KOS_CC) $(KOS_CFLAGS) $(KOS_LDFLAGS) -o $(TARGET) $(KOS_START) $(OBJS) $(OBJEXTRA) )
далее. при попытке поставить двоеточие между $KOS_CC и KOS_CFLAGS
пишет ошибку в 37 (то же самое). ставим и там двоеточие, пока не: mutiple target patterns, stop.
Проверь у себя еще раз и если у тебя запустится то значит у меня косяки.


PHP код:
#
# Basic KallistiOS skeleton / test program
# Copyright (C)2001-2004 Dan Potter
#   

# Put the filename of the output binary here
TARGET hello.elf

# List all of your C files here, but change the extension to ".o"
# Include "romdisk.o" if you want a rom disk.
OBJS hello.o romdisk.o

# If you define this, the Makefile.rules will create a romdisk.o for you
# from the named dir.
KOS_ROMDISK_DIR romdisk

# The rm-elf step is to remove the target before building, to force the
# re-creation of the rom disk.
allrm-elf $(TARGET)

include $(
KOS_BASE)/Makefile.rules

clean
:
    -
rm -$(TARGET) $(OBJSromdisk.*

rm-elf:
    -
rm -$(TARGETromdisk.*

#$(TARGET): $(OBJS)
#    kos-cc -o $(TARGET) $(OBJS)
#Remade the string by the SWAT advise:
#


$(TARGET): $(OBJS)
    $(
KOS_CC) $(KOS_CFLAGS) $(KOS_LDFLAGS) -$(TARGET) $(KOS_START) $(OBJS) $(OBJEXTRA) $(KOS_LIBS)
    $(
KOS_STRIP) $(TARGET)
    $(
KOS_OBJCOPY) -.stack -O binary $(TARGETunscrambled.bin
    
$(KOS_BASE)/utils/scramble/scramble unscrambled.bin 1ST_READ.BIN 

run
: $(TARGET)
    $(
KOS_LOADER) $(TARGET)

dist:
    
rm -$(OBJSromdisk.o romdisk.img
    
$(KOS_STRIP) $(TARGET

[Изображение: 3887d52cdb90t.jpg]
(Последний раз сообщение было отредактировано 02.04.2011 в 15:02, отредактировал пользователь Rio.)
02.04.2011 14:53
Найти все сообщения Цитировать это сообщение
SWAT Не на форуме
Администратор
*******

Сообщений: 7237
Зарегистрирован: 04.01.2005
Рейтинг: 30
Сказал спасибо: 149
Поблагодарили 1214 раз(а) в 762 сообщ.
Сообщение: #22
RE: Вапрос
Проверь чтобы перед каждой командой стояла табуляция. Именно табуляция! Там у тебя скорее всего пробелы.
Никаких двоеточий нам лепить не нужно.

[Изображение: barbers.png]
(Последний раз сообщение было отредактировано 02.04.2011 в 15:30, отредактировал пользователь SWAT.)
02.04.2011 15:26
Вебсайт Найти все сообщения Цитировать это сообщение
Rio Не на форуме
Продвинутый
***

Сообщений: 371
Зарегистрирован: 04.04.2009
Рейтинг: 2
Сказал спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщ.
Сообщение: #23
RE: Вапрос
[Изображение: b1918a55baaa38d0da4e8d27815c9639.jpg]
02.04.2011 17:34
Найти все сообщения Цитировать это сообщение
SWAT Не на форуме
Администратор
*******

Сообщений: 7237
Зарегистрирован: 04.01.2005
Рейтинг: 30
Сказал спасибо: 149
Поблагодарили 1214 раз(а) в 762 сообщ.
Сообщение: #24
RE: Вапрос
Замени это
PHP код:
allrm-elf $(TARGET

на это
PHP код:
all: $(TARGET

Вообще конечно странно, у тебя прописана эта команда в Makefile, почему он говорит что ее нет... Может быть ты удалил случайно это?

PHP код:
rm-elf:
    -
rm -$(TARGETromdisk.* 

[Изображение: barbers.png]
(Последний раз сообщение было отредактировано 02.04.2011 в 18:46, отредактировал пользователь SWAT.)
02.04.2011 18:42
Вебсайт Найти все сообщения Цитировать это сообщение
Rio Не на форуме
Продвинутый
***

Сообщений: 371
Зарегистрирован: 04.04.2009
Рейтинг: 2
Сказал спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщ.
Сообщение: #25
RE: Вапрос
Сват, можешь скинуть полный текст рабочего makefile'а? Пожалуйста.
02.04.2011 20:19
Найти все сообщения Цитировать это сообщение
Rio Не на форуме
Продвинутый
***

Сообщений: 371
Зарегистрирован: 04.04.2009
Рейтинг: 2
Сказал спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщ.
Сообщение: #26
RE: Вапрос
No rule to make target hello.elf
02.04.2011 20:48
Найти все сообщения Цитировать это сообщение
SWAT Не на форуме
Администратор
*******

Сообщений: 7237
Зарегистрирован: 04.01.2005
Рейтинг: 30
Сказал спасибо: 149
Поблагодарили 1214 раз(а) в 762 сообщ.
Сообщение: #27
RE: Вапрос
Лови. Я проверил, работает.

PHP код:
# KallistiOS ##version##
#
# Makefile example
# Copyright (C) 2011 SWAT
#

TARGET hello
OBJS 
hello.o romdisk.o
KOS_ROMDISK_DIR 
romdisk

all
rm-elf $(TARGET).elf

include $(KOS_BASE)/Makefile.rules

rm
-elf:
    -
rm -f 1ST_READ.BIN $(TARGET).bin $(TARGET).elf romdisk.*

cleanrm-elf
    
-rm -$(OBJS)

$(
TARGET).elf: $(OBJS)
    $(
KOS_CC) $(KOS_CFLAGS) $(KOS_LDFLAGS) -$(TARGET).elf $(KOS_START) $(OBJS) $(OBJEXTRA) $(KOS_LIBS)
    $(
KOS_STRIP) $(TARGET).elf
    
$(KOS_OBJCOPY) -.stack -O binary $(TARGET).elf $(TARGET).bin
    
$(KOS_BASE)/utils/scramble/scramble $(TARGET).bin 1ST_READ.BIN 

[Изображение: barbers.png]
(Последний раз сообщение было отредактировано 03.04.2011 в 10:58, отредактировал пользователь SWAT.)
03.04.2011 10:56
Вебсайт Найти все сообщения Цитировать это сообщение
Rio Не на форуме
Продвинутый
***

Сообщений: 371
Зарегистрирован: 04.04.2009
Рейтинг: 2
Сказал спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщ.
Сообщение: #28
RE: Вапрос
О чё добился!

[Изображение: 926570m.jpg]

Однако хотелось бы, чтобы буковки "Hello, World!" выводились на экран приставки, а не в консоль-дебаг.
(Последний раз сообщение было отредактировано 04.04.2011 в 21:22, отредактировал пользователь Rio.)
04.04.2011 20:30
Найти все сообщения Цитировать это сообщение
sc_maxim Не на форуме
Пользователь
**

Сообщений: 94
Зарегистрирован: 27.11.2010
Рейтинг: 1
Сказал спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщ.
Сообщение: #29
RE: Вапрос
Используй для этого SDL_ttf. ну по крайней мере я через нее выводил Smile Щас напишу пример.
(Последний раз сообщение было отредактировано 04.04.2011 в 22:47, отредактировал пользователь sc_maxim.)
04.04.2011 22:42
Найти все сообщения Цитировать это сообщение
Rio Не на форуме
Продвинутый
***

Сообщений: 371
Зарегистрирован: 04.04.2009
Рейтинг: 2
Сказал спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщ.
Сообщение: #30
RE: Вапрос
Спасибо большое)) И еще, где-то объясняется значение этих переменных?
PHP код:
$(TARGET).elf: $(OBJS)
    $(
KOS_CC) $(KOS_CFLAGS) $(KOS_LDFLAGS) -$(TARGET).elf $(KOS_START) $(OBJS) $(OBJEXTRA) $(KOS_LIBS)
    $(
KOS_STRIP) $(TARGET).elf
    
$(KOS_OBJCOPY) -.stack -O binary $(TARGET).elf $(TARGET).bin
    
$(KOS_BASE)/utils/scramble/scramble $(TARGET).bin 1ST_READ.BIN 
?
04.04.2011 23:26
Найти все сообщения Цитировать это сообщение
sc_maxim Не на форуме
Пользователь
**

Сообщений: 94
Зарегистрирован: 27.11.2010
Рейтинг: 1
Сказал спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщ.
Сообщение: #31
RE: Вапрос
Вот текст программы:
PHP код:
#include <kos.h>
#include <SDL/SDL.h>
#include <SDL/SDL_ttf.h>

extern uint8 romdisk[];

KOS_INIT_FLAGS(INIT_DEFAULT INIT_MALLOCSTATS);

KOS_INIT_ROMDISK(romdisk);

int main(int argcchar **argv
{
    
// Инициализация подсистем SDL.    
    
if( SDL_InitSDL_INIT_VIDEO ) < || TTF_Init() < 
    {
        
printf"Error: %s\n\n",SDL_GetError() );
        return 
1;
    }
    
// Установка видеорежима.
    
SDL_Surface*    screen SDL_SetVideoMode
                                            
64048016
                                            
SDL_SWSURFACE SDL_DOUBLEBUF );
    if( 
screen == NULL )
    {    
        
printf"Error: %s\n\n"SDL_GetError() );
        return 
2;
    }
    
// Загрузка рисунка.
    
SDL_Surface*    image SDL_LoadBMP"/rd/hello.bmp" );
    
// Загрузка файла шрифта.
    
TTF_Font*    font TTF_OpenFont"/rd/font.ttf"24 );
    if( 
font == NULL )
    {
        
printf"OpenFont error: %s\n\n"SDL_GetError() );
        return    
3;
    }
    
// Цвет для выводимого текста.
    
SDL_Color    color =  { 2552550};
    
// Рендеринг текста в отдельную поверхность.
    
SDL_Surface*    text TTF_RenderText_Solid(
                                
font
                                
"Hello, World!",
                                
color );
    
SDL_BlitSurfaceimageNULLscreenNULL );
    
// Наложение поверхности текста на поверхность экрана.
    
SDL_BlitSurfacetextNULLscreenNULL );
    
// Обновление экрана (т.е. вывод того что нарисовали на экран). 
    
SDL_Flipscreen );
    for( ; ; ){};
    return 
0;

И собственно Makefile:
PHP код:
#    ljsdcdev
#    showfont makefile
#    Lawrence Sebald
#    Based on KOS makefiles by Dan Potter
#

KOS_CFLAGS += -I$(KOS_BASE)/../kos-ports/include/SDL-1.2.9 \
    -
I$(KOS_BASE)/../kos-ports/include/freetype
TARGET 
hello

all
1ST_READ.BIN

include $(KOS_BASE)/Makefile.rules

OBJS 
= $(TARGET).o

1ST_READ
.BIN: $(TARGET).elf
    
$(KOS_STRIP) $(TARGET).elf
    
$(KOS_OBJCOPY) -.stack -O binary $(TARGET).elf $(TARGET).bin
    
$(KOS_BASE)/utils/scramble/scramble $(TARGET).bin 1ST_READ.BIN 

$(TARGET).elf: $(OBJSromdisk.o
    
$(KOS_CC) $(KOS_CFLAGS) $(KOS_LOCAL_CFLAGS) $(KOS_LDFLAGS) -$@ $(KOS_START) $^ -lSDL_ttf -lfreetype -lSDL -lm $(KOS_LIBS)

romdisk.img:
    $(
KOS_GENROMFS) -f romdisk.img -d romdisk -v

romdisk
.oromdisk.img
    
$(KOS_BASE)/utils/bin2o/bin2o romdisk.img romdisk romdisk.o

clean
:
    
rm -$(OBJSromdisk.o romdisk.img $(TARGET).elf $(TARGET).$(TARGET).bin 1ST_READ.BIN 
(Последний раз сообщение было отредактировано 05.04.2011 в 02:12, отредактировал пользователь sc_maxim.)
05.04.2011 02:10
Найти все сообщения Цитировать это сообщение
SWAT Не на форуме
Администратор
*******

Сообщений: 7237
Зарегистрирован: 04.01.2005
Рейтинг: 30
Сказал спасибо: 149
Поблагодарили 1214 раз(а) в 762 сообщ.
Сообщение: #32
RE: Вапрос
(04.04.2011 23:26)Rio писал(а):  Спасибо большое)) И еще, где-то объясняется значение этих переменных?

В файлах environ которые лежат в корне kos.

Для простого вывода текста на экран можно использовать bfont (bios font).

[Изображение: barbers.png]
(Последний раз сообщение было отредактировано 05.04.2011 в 06:12, отредактировал пользователь SWAT.)
05.04.2011 06:10
Вебсайт Найти все сообщения Цитировать это сообщение
Rio Не на форуме
Продвинутый
***

Сообщений: 371
Зарегистрирован: 04.04.2009
Рейтинг: 2
Сказал спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщ.
Сообщение: #33
RE: Вапрос
sc_maxim, где именно должны стоять символы табуляции, а где можно оставить пробелы? Возможен ли перенос строк? Если да, то каких?
PHP код:
ExceptionSTATUS_ACCESS_VIOLATION at eip=6100F02F
eax
=0022DAD4 ebx=00000000 ecx=00000000 edx=FFFFFFFF esi=00660420 edi=0040435E
ebp
=0022CB18 esp=0022CA60 program=C:\cygwin\usr\local\dc\kos\kos\utils\genromfs\genromfs.exepid 3308thread main
cs
=001B ds=0023 es=0023 fs=003B gs=0000 ss=0023
Stack trace
:
Frame     Function  Args
0022CB18  6100F02F  
(000000016116CF086116CF080022CB70)
0022CCE8  004027A5  (000000066116CE20006600900022CC70)
0022CD98  61006198  (000000000022CDD0610055100022CDD0)
61005510  61004416  (0000009CA02404C7E8611021FFFFFF48)
      
[maingenromfs 3308 _cygtls::handle_exceptionsError while dumping state (probably corrupted stack
[Изображение: 8Z0C2rBc.jpg]
Вообще, почему так сложно писать эти make-файлы?
(Последний раз сообщение было отредактировано 10.04.2011 в 18:47, отредактировал пользователь Rio.)
10.04.2011 18:29
Найти все сообщения Цитировать это сообщение
SWAT Не на форуме
Администратор
*******

Сообщений: 7237
Зарегистрирован: 04.01.2005
Рейтинг: 30
Сказал спасибо: 149
Поблагодарили 1214 раз(а) в 762 сообщ.
Сообщение: #34
RE: Вапрос
Табуляция должна быть перед командами, все остальное можно пробелами.
Если ты хочешь перенести часть строки с командой на новую, то ставь на месте переноса \ (бэкслеш).
Писать makefile не сложно, если знать их принцип.
Попробуй скомпилить сам genromfs.

[Изображение: barbers.png]
11.04.2011 05:58
Вебсайт Найти все сообщения Цитировать это сообщение
Rio Не на форуме
Продвинутый
***

Сообщений: 371
Зарегистрирован: 04.04.2009
Рейтинг: 2
Сказал спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщ.
Сообщение: #35
RE: Вапрос
Та принцип то мне в приципе понятен.... Просто непонятны некоторые закарлючки там, типа символа собаки и т.п. Ладно, неважно все это...
Вобще, честно говоря, грустно мне немного как-то. Думал, скачаю КОС, почитаю, ну максимум там, апи, и буду писать свои проги под дрим... А оказалось столько всего изучить надо - и компиляторы (все другое, не такое как в винде), и командную строку, и makefile'ы, и принцип организации кос, и вообще кучу кучу всего... вот так и разбиваются мечты "юных" девелоперов. за день напишу пинг-понг... ага, куда там... Эх! А ведь так хотелось, так...
(Последний раз сообщение было отредактировано 12.04.2011 в 21:02, отредактировал пользователь Rio.)
12.04.2011 20:53
Найти все сообщения Цитировать это сообщение
SWAT Не на форуме
Администратор
*******

Сообщений: 7237
Зарегистрирован: 04.01.2005
Рейтинг: 30
Сказал спасибо: 149
Поблагодарили 1214 раз(а) в 762 сообщ.
Сообщение: #36
RE: Вапрос
Ну а как ты хотел Smile По сути это *nix style программирование.
Собака отключает вывод результата команды в консоль.

[Изображение: barbers.png]
13.04.2011 06:19
Вебсайт Найти все сообщения Цитировать это сообщение
Rio Не на форуме
Продвинутый
***

Сообщений: 371
Зарегистрирован: 04.04.2009
Рейтинг: 2
Сказал спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщ.
Сообщение: #37
RE: Вапрос
Сват, а есть какие-то 3d-движки ну или хотя бы интерфейся для создания 3d-графики на Дриме? Библиотеки там, я хз.
13.04.2011 20:29
Найти все сообщения Цитировать это сообщение
SWAT Не на форуме
Администратор
*******

Сообщений: 7237
Зарегистрирован: 04.01.2005
Рейтинг: 30
Сказал спасибо: 149
Поблагодарили 1214 раз(а) в 762 сообщ.
Сообщение: #38
RE: Вапрос
Ну только порты типа кваки и yeti3d.
А так только API PVR и OpenGL.

[Изображение: barbers.png]
14.04.2011 10:38
Вебсайт Найти все сообщения Цитировать это сообщение
Rio Не на форуме
Продвинутый
***

Сообщений: 371
Зарегистрирован: 04.04.2009
Рейтинг: 2
Сказал спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщ.
Сообщение: #39
RE: Вапрос
Вот кстати идея возникла. Недавно в какой-то умной книжке прочитал, что все библиотечные функции по умолчанию линкуются по одним и тем же адресам. соответственно, возрастает шанс декомпиляции дримовских программ.
это так или нет? (насчет линковки)?
13.05.2011 16:04
Найти все сообщения Цитировать это сообщение
SWAT Не на форуме
Администратор
*******

Сообщений: 7237
Зарегистрирован: 04.01.2005
Рейтинг: 30
Сказал спасибо: 149
Поблагодарили 1214 раз(а) в 762 сообщ.
Сообщение: #40
RE: Вапрос
На сколько я понимаю сей процесс, они линкуются в том порядке, в котором они прописаны компилятору. Так как стандартные библиотеки прописаны по умолчанию в конфигах, то соответственно они как правило сидят в одних и тех же местах. Но вот дополнительные библиотеки могут распихивать как угодно.
То же касается компилируемых исходников, если файлы поменять местами в порядке линковки, то они будут находится по другим адресам.
Поэтому то и при компилировании в начало линковки ставят asm код для инициализации железа. Если его поставить вторым или еще каким, но не первым, программа не запустится, так как в начале будет что то другое.
Так что тут зависит от среды, если эта полностью автоматизированная среда, аля Visual Studio, то там вполне может так и быть.
Но я за это не ручаюсь, не читал нужной литературы, все выводы только по собственному опыту делал.

[Изображение: barbers.png]
13.05.2011 17:26
Вебсайт Найти все сообщения Цитировать это сообщение
Создать ответ 


Переход:


Пользователи просматривают эту тему: 10 Гость(ей)