| 
 Вапрос - Rio -  27.03.2011 20:01
 
 sh-elf-gcc -ml -Wl,-Ttext,0x8c010000 -nostartfiles -nostdlib -e _start prog.c -o prog.elf -lgcc
 sh-elf-objcopy -O binary prog.elf prog.bin
 scramble prog.bin 1ST_READ.BIN
 
 
 RE: Вапрос - Rio -  27.03.2011 20:28
 
 PS: убунту подойдет для девелопмента?
 
 
 RE: Вапрос - sc_maxim -  28.03.2011 00:38
 
 скачай DDEr4 и не парь себе мозг с линуксом. Поставишь все оттуда и сможешь программировать для дрима под Windows. Там есть примеры которые просто разобрать и изменитьпод свои нужды. Сборка программ делается через Makefile. После сборки появляется elf-файл (это универсальный формат для объектных и исполнимых файлов для разных ОС и устройств, в том числе и для Дрима), этот файл легко конвертировать через 1st_read.bin checker в bin и запустить на дриме или на эмуле.
 
 
 RE: Вапрос - Rio -  29.03.2011 16:20
 
 Да токо оно кучу ошибок выдает.
 
 
 RE: Вапрос - SWAT -  29.03.2011 18:38
 
 Сплошные проблемы у тебя... Не судьба
   
 
 RE: Вапрос - sc_maxim -  29.03.2011 21:53
 
 Ошибки анализируешь и смотришь что их провоцирует.
 Ничего там сложного нет.
 
 
 RE: Вапрос - SWAT -  30.03.2011 06:11
 
 Да Rio, если ты не научишься фиксить ошибки, у тебя никогда ничего не получится
   
 
 RE: Вапрос - Rio -  30.03.2011 16:01
 
 Сват, ну я же не настолько дурак)) Естессно, я фиксю их. Но после двадцатого запроса в гугл, нечто на подобии, "Kallisti Os errors" или "KOS errors list", и не находя нужного ответа, уже как-то, честно, опускаются руки))
 
 
 RE: Вапрос - SWAT -  30.03.2011 18:28
 
 Хмм что то ты не то ищешь... Что у тебя за ошибки вообще?
 
 
 RE: Вапрос - Rio -  30.03.2011 18:50
 
 
 ![[Изображение: rdmLj6uT.jpg]](http://s1.ipicture.ru/uploads/20110330/thumbs/rdmLj6uT.jpg)  
 
 RE: Вапрос - sc_maxim -  30.03.2011 19:09
 
 Так ты ничего не скомпилишь. Если уж нужно скомпилировать отдельный файл, то используй это:
 kos-cc -o prog.elf prog.c
 а вообщето заходи в папку /usr/local/dc/kos/kos/examples/dreamcast
 печатай:
 make
 Так ты соберешь примеры. Если все правильно соберется то найди пример поменьше и попробуй переделать его. Там вроде есть что-то типа Hello world вот с него и начни.
 
 
 RE: Вапрос - Rio -  31.03.2011 01:43
 
 
 Цитата:Так ты ничего не скомпилишь.Почему? 
 Цитата:kos-cc -o prog.elf prog.cОткуда ты узнал что компилить надо именно так? 
 Цитата:Там вроде есть что-то типа Hello world вот с него и начни.Конечно. Я уже пробовал. Он не работает. 
 
 RE: Вапрос - sc_maxim -  31.03.2011 01:59
 
 1) Потому что sh-elf-gcc - это голый компилятор, который не знает где лежать хэдеры и либы, А kos-cc - это врепепер, которий создан специально для того чтобы упростить компиляцию. Узнать о нем можно посмотрев в файлы environ*.sh.
 
 2) Так компилятся программы через gcc компилятор. Не уверен что собранная таким образом программа заработает на дриме, тем более что там еще нужно указывать кучу библиотек. Это я так для примера показал.
 
 3) Если у тебя это не работает, то скорей всего ты не зашел в папки .../kos/kos и /kos/kos-ports и не ввел там make. Или же ты не выполнил команду source environ.sh находясь в папке .../kos/kos, которую нужно выполнять каждый раз при запуске Cygwin.
 
 Если ничего из этого тебе не поможет то скинешь скриншот ошибки, которая возникает при попытке собрать hello.
 
 
 RE: Вапрос - SWAT -  31.03.2011 08:06
 
 Суда по ошибке, у тебя не загружен environ.sh
 Его можно прописать в /etc/profile вместо строки:
 
 Напиши:
 
 
Код:
 cd /usr/local/dc/kos/kos./environ.sh
 После этого при запуске консоли cygwin, ты будешь находится в нужной папке с выставленными параметрами для компиляциями.
 Заходишь в директорию examples/dreamcast/hello и пишешь make. Если собралось, можешь дальше экспериментировать с этим примером.
 
 Да и кстати, если ты все устанавливал сам, а не с готового установщика, то файл environ.sh нужно взять из doc и сконфигурять в нем пути. Но судя по скриншоту он у тебя уже есть.
 
 
 RE: Вапрос - Rio -  01.04.2011 17:09
 
 
 вот полный текст моего файла. судя по всему заданная строка в нем уже есть.PHP код:
 # base-files version 4.0-6# /etc/profile: executed by the command interpreter for login shells.
 
 # The latest version as installed by the Cygwin Setup program can
 # always be found at /etc/defaults/etc/profile
 
 # Modifying /etc/profile directly will prevent
 # setup from updating it.
 
 # System-wide profile file
 
 # Some resources...
 # Customizing Your Shell: http://www.dsl.org/cookbook/cookbook_5.html#SEC69
 # Consistent BackSpace and Delete Configuration:
 #   http://www.ibb.net/~anne/keyboard.html
 # The Linux Documentation Project: http://www.tldp.org/
 # The Linux Cookbook: http://www.tldp.org/LDP/linuxcookbook/html/
 
 # Setup some default paths. Note that this order will allow user installed
 # software to override 'system' software.
 # Modifying these default path settings can be done in different ways.
 # To learn more about startup files, refer to your shell's man page.
 PATH="/usr/local/bin:/usr/bin:${PATH}"
 MANPATH="/usr/local/man:/usr/share/man:/usr/man:${MANPATH}"
 INFOPATH="/usr/local/info:/usr/share/info:/usr/info:${INFOPATH}"
 
 # Set the user id
 USER="$(id -un)"
 
 # TMP and TEMP are defined in the Windows environment. Leaving
 # them set to the default Windows temporary directory or unset
 # can have unexpected consequences.
 unset TMP TEMP
 TMP="/tmp"
 TEMP="/tmp"
 
 # Define default printer
 p='/proc/registry/HKEY_CURRENT_USER/Software/Microsoft/Windows NT/CurrentVersion/Windows/Device'
 if [ -e "${p}" ] ; then
 read -r PRINTER < "${p}"
 PRINTER=${PRINTER%%,*}
 fi
 unset p
 
 # Default to removing the write permission for group and other
 #  (files normally created with mode 777 become 755; files created with
 #  mode 666 become 644)
 umask 022
 
 # Here is how HOME is set, in order of priority, when starting from Windows
 #  1) From existing HOME in the Windows environment, translated to a Posix path
 #  2) from /etc/passwd, if there is an entry with a non empty directory field
 #  3) from HOMEDRIVE/HOMEPATH
 #  4) / (root)
 # If the home directory doesn't exist, create it.
 if [ ! -d "${HOME}" ]; then
 if mkdir -p "${HOME}"; then
 echo "Copying skeleton files."
 echo "These files are for the users to personalise their cygwin experience."
 echo
 echo "They will never be overwritten nor automatically updated."
 echo
 cd /etc/skel || echo "WARNING: Failed attempt to cd into /etc/skel!"
 /usr/bin/find . -type f | while read f; do
 fDest=${f#.}
 if [ ! -e "${HOME}${fDest}" -a ! -L "${HOME}${fDest}" ]; then
 /usr/bin/install -D -p -v "${f}" "${HOME}/${fDest}"
 fi
 done
 unset fDest
 else
 echo "${HOME} could not be created."
 { [ -d "${TEMP}" ] && HOME="${TEMP}"; } ||
 { [ -d "${TMP}" ] && HOME="${TMP}"; } ||
 { [ -d /tmp ] && HOME=/tmp; } ||
 HOME=/
 echo "Setting HOME to ${HOME}."
 fi
 fi
 
 # Make sure we start in home unless invoked by CHERE
 if [ ! -z "${CHERE_INVOKING}" ]; then
 unset CHERE_INVOKING
 else
 cd "${HOME}" || echo "WARNING: Failed attempt to cd into ${HOME}!"
 fi
 
 # Shell dependent settings
 profile_d ()
 {
 saved_LC_COLLATE=${LC_COLLATE}
 LC_COLLATE=C
 for file in /etc/profile.d/*.$1; do
 [ -e "${file}" ] && . "${file}"
 done
 LC_COLLATE=${saved_LC_COLLATE}
 unset saved_LC_COLLATE
 }
 
 if [ ! "x${BASH_VERSION}" = "x"  ]; then
 HOSTNAME=$(/usr/bin/hostname)
 profile_d sh
 [ -f "/etc/bash.bashrc" ] && . "/etc/bash.bashrc"
 elif [ ! "x${KSH_VERSION}" = "x" ]; then
 typeset -l HOSTNAME=$(/usr/bin/hostname)
 profile_d sh
 PS1=$(print '\033]0;${PWD}\n\033[32m${USER}@${HOSTNAME} \033[33m${PWD/${HOME}/~}\033[0m\n$ ')
 elif [ ! "x${ZSH_VERSION}" = "x" ]; then
 HOSTNAME=$(/usr/bin/hostname)
 profile_d zsh
 PS1='(%n@%m)[%h] %~ %% '
 elif [ ! "x${POSH_VERSION}" = "x" ]; then
 HOSTNAME=$(/usr/bin/hostname)
 PS1="$ "
 else
 HOSTNAME=$(/usr/bin/hostname)
 profile_d sh
 PS1="$ "
 fi
 
 export PATH MANPATH INFOPATH USER TMP TEMP PRINTER HOSTNAME PS1
 
 # Check to see if mkpasswd/mkgroup needs to be run try and cut down the emails
 #   about this on the lists!
 #
 # The following are the conditions under which the group name special cases
 #   will appear (where uid and gid are the effective user and group ids
 #   for the current user, and pgsid is the primary group associated with the
 #   SID for the current user):
 #       mkpasswd:
 #         gid is not in /etc/group
 #         uid is not in /etc/passwd
 #       passwd/group_GID_clash(<gid>/<pgsid>):
 #         gid is not in /etc/group
 #         uid is in /etc/passwd
 #         pgsid is in /etc/group (and does not match gid)
 #       mkgroup:
 #         gid is not in /etc/group
 #         uid is in /etc/passwd
 #         pgsid is not in /etc/group
 #
 # If this message keeps appearing and you are sure it's a mistake (ie, don't
 #   email about it!), comment out the test below.
 case "$(id -ng)" in
 mkpasswd )
 echo "Your group is currently \"mkpasswd\".  This indicates that your"
 echo "gid is not in /etc/group and your uid is not in /etc/passwd."
 echo
 echo "The /etc/passwd (and possibly /etc/group) files should be rebuilt."
 echo "See the man pages for mkpasswd and mkgroup then, for example, run"
 echo
 echo "mkpasswd -l [-d] > /etc/passwd"
 echo "mkgroup  -l [-d] > /etc/group"
 echo
 echo "Note that the -d switch is necessary for domain users."
 ;;
 passwd/group_GID_clash* )
 echo "Your group is currently \"passwd/group_GID_clash(gid/pgsid)\".  This"
 echo "indicates that your gid is not in /etc/group, but the pgsid (primary "
 echo "group associated with your SID) is in /etc/group."
 echo
 echo "The /etc/passwd (and possibly /etc/group) files should be rebuilt."
 echo "See the man pages for mkpasswd and mkgroup then, for example, run"
 echo
 echo "mkpasswd -l [-d] > /etc/passwd"
 echo "mkgroup  -l [-d] > /etc/group"
 echo
 echo "Note that the -d switch is necessary for domain users."
 ;;
 mkgroup )
 echo "Your group is currently \"mkgroup\".  This indicates that neither"
 echo "your gid nor your pgsid (primary group associated with your SID)"
 echo "is in /etc/group."
 echo
 echo "The /etc/group (and possibly /etc/passwd) files should be rebuilt."
 echo "See the man pages for mkpasswd and mkgroup then, for example, run"
 echo
 echo "mkpasswd -l [-d] > /etc/passwd"
 echo "mkgroup  -l [-d] > /etc/group"
 echo
 echo "Note that the -d switch is necessary for domain users."
 ;;
 esac
 
 
 cd /usr/local/dc/kos/kos
 source environ.sh
 
при попытке вызвать из консоли команду make пишет ругательное "command not found".
 
 
 RE: Вапрос - sc_maxim -  01.04.2011 20:01
 
 значит ты установил  Cygwin не полностью. Ты устанавливал с DDEr4?
 Если да то попробуй все переустановить заново, удавлив предварительно все его папки. И нужно щелкнуть при выборе компонентов Cygwin по All - Default, чтобы оно изменилось на All - Install, иначе опять не будет команды make.
 
 
 RE: Вапрос - Rio -  02.04.2011 12:53
 
 Вот еще такой вопрос. Откомпайлил я hello world. В папке, соответсвенно, появилось несколько файлов, в том числе и файл hello.elf огромного (просто таки ужасающего) размера - аж целых 998 Кбайт. Что не мало, согласитесь.
 Итак, что мне надо дальше с этим файлом делать? На попытки выполнить из командной строки утилиты elf2bin и scramble интерпретатор отвечает что команды не найдены.
 
 
 RE: Вапрос - SWAT -  02.04.2011 13:03
 
 Ну конечно он их не нашел, потому что их там нет.
 
 Замени в Makefile строки:
 
 
 PHP код:
 $(TARGET): $(OBJS)kos-cc -o $(TARGET) $(OBJS)
 
На эти:
 
 
 PHP код:
 $(TARGET): $(OBJS)$(KOS_CC) $(KOS_CFLAGS) $(KOS_LDFLAGS) -o $(TARGET) $(KOS_START) $(OBJS) $(OBJEXTRA) $(KOS_LIBS)
 $(KOS_STRIP) $(TARGET)
 $(KOS_OBJCOPY) -R .stack -O binary $(TARGET) unscrambled.bin
 $(KOS_BASE)/utils/scramble/scramble unscrambled.bin 1ST_READ.BIN
 
Если у тебя нет утилиты utils/scramble/scramble то закинь туда ее.
 Размера файла пугаться не стоит, в нем есть куча ненужно инфы, которая потом удалится с помощью KOS_STRIP. Да и при конвертации в бинарник, он еще немного уменьшится.
 
 
 RE: Вапрос - Rio -  02.04.2011 13:04
 
 Не понял. Еще разочек пожалуйста. Что делать с hello.elf.
 
 
 RE: Вапрос - SWAT -  02.04.2011 13:15
 
 Тебе ничего не придется с ним больше делать, когда ты внесешь изменения в Makefile как я сказал.
 
 
 
 |