в общем теперь так... что с твоей версией(c местного ftp).. что с моей(с зеркала официального ftp), как я понял разницы нету(всмысле итог один и тот же, но размер файлов разный)...
распоковал
djgpp и
menuetlibc....
прописал все переменные среды(
DJGPP,
MENUETDEV - поставил
c:\DJGPP\menuetos\ и в Path добавил пути к
menuetos\include\,
menuetos\linuxtools\,
DJGPP\bin\)...
распоковал
FCEU_v0.1a_src.7z...
получил кучу
*.c,
*.h,
*.o и других файлов...
у тебя там лежит уже скомпилированный
fce(размер 263104)... рабочий...
и fce.kex(размер 74292, сжатый kpack)... тоже рабочий...
проверяю через KlbrInWin.exe, на "
Matrix v0.06, The by Wojciech Andralojc (PD).nes" и "
Tetramino v0.30 by Damian Yerrick (PD).nes"....
Опыт 1:
снес откомпилированные(но оставил
*.o файлы)...
сразу попытался собрать
fce через
MK.bat...
получаю
fce(размер 252352)... хм.. проверяю... рабочий.. =)...
Опыт 2:
снес
fce и все
*.o файлы... даже в подпапках.. =)...
запускаю
MKBase.bat...
fce.o,
m6502.o,
mapper.o компилируються нормально.... вываливается ошибка на компиляции
video.c..
Code: Select all
gcc -Wall -c -o video.o video.c
video.c: In function 'InitVirtualVideo':
video.c:39: warning: assignment makes pointer from integer without a cast
video.c: In function 'writepcx':
video.c:65: error: expected ')' before 'PSS'
video.c:65: warning: too few arguments for format
video.c:73: warning: pointer targets in passing argument 1 of 'sprintf' differ i
n signedness
video.c:111: warning: pointer targets in passing argument 1 of 'sprintf' differ
in signedness
make.exe: *** [video.o] Error 1
варнинги я как понял совсем не причер.. смотрю причину ерроров.. =)..
так... чтото с переменной
PSS... она определяется в
version.h...
залез туда... вижу:
Code: Select all
...
#if PSS_STYLE==2
#define PSS "\\"
#define PS '\\'
#elif PSS_STYLE==1
#define PSS "/"
#define PS '/'
#elif PSS_STYLE==3
#define PSS "\\"
#define PS '\\'
#endif
...
хм... видимо pss не определяеться.... т.е.
PSS_STYLE не проходит...
тут два вариант придумал... либо изменить в
version.h вместо выше написанного...
Code: Select all
...
#define PSS "/"
#define PS '/'
...
либо
вставить в первую строчку в файл
Makefile.base строчку:
Code: Select all
TFLAGS = -O2 -fomit-frame-pointer -DC80x86 -DLSB_FIRST -DVGA -DPSS_STYLE=1 -DDRIVER_DIR="\"menuet\""
строчку взял из
Makefile.menuet... кстати.. этот файл нигде не участвует.. ну и ладно.. =))..
я рекомендую второй вариант... =)... благо с первым вариантов
fce будет компилироваться и собираться... но работать не будет.. =)..
...
чтож... пытаюсь снова скомпилировать.. получаю
Code: Select all
c:\DJGPP\bin\ld.exe: nest.o: No such file: No such file or directory (ENOENT)
видимо не хватает файлика
nest.o... иду в
drivers\menuet\...
выполняю команду
make.... получаю ошибки(пока пишу две главные.. остальные может изчезнут)...
Code: Select all
nest.c:1:70: error: D:/OS/menuetos/include/menuet/os.h: No such file or directory (ENOENT)
vgavblank.h:2:50: error: D:/OS/menuetos/include/SDL/SDL_timer.h: No such file or directory (ENOENT)
хм... вижу что видимо стоят жесткие пути... иду исправлять.. =)...
как не страно.. правильные(т.е. относительные пути для настроеной системы) были закоментированы... убираю полные пути... убираю коментарии.. опять
make...
nest.o собирается... хоть make и выдает вроде(пишу так, ибо я с майком крайне мало работал.. и плохо разбираюсь в ошибках) ошибку:
Code: Select all
nest.o:nest.c:(.text+0x40f): undefined reference to `_DriverInterface'
nest.o:nest.c:(.text+0x7b1): undefined reference to `_LoadGame'
nest.o:nest.c:(.text+0x7bd): undefined reference to `_InitMachine'
nest.o:nest.c:(.text+0x7c6): undefined reference to `_TrashMachine'
nest.o:nest.c:(.text+0x7d6): undefined reference to `_Run6502'
nest.o:nest.c:(.text+0x7db): undefined reference to `_TrashFCE'
nest.o:nest.c:(.text+0x7e0): undefined reference to `_TrashMachine'
nest.o:nest.c:(.text+0x837): undefined reference to `_fceumain'
nest.o:nest.c:(.text+0x986): undefined reference to `_SDL_Delay'
make.exe: *** [nest] Error 1
теперь
MKBase.bat проходит нормально.. =).. буду запускать
MK.bat..
новая ошибка... не находит m.о... хотя он нормально собирается еще в
MKBase.bat... это как я понял
mapper'ы...
смотрю в
MK.bat... вижу
Code: Select all
mld fce fce.o mapper.o m6502.o video.o general.o endian.o svga.o sound.o nsf.o fds.o gg.o ines.o state.o nest.o m.o LibmSDL.a
строчка сборки запускаемого файла... как я понял.. =)... чтож... нужный файл
m.o лежит в папке
mappers\.. чтоже.. исправляю
MK.bat... добавляю гденить сверху строчку
...
и о чудо... файл полностью собирается... получается
fce размером 252352 байт... не верю глазам.. =)... такой же как и у тебя.. =)... контрольная сумма не совпадает только...
запускаю KlbrInWin.exe... вбиваю путь... нажимаю enter... и УРА... работает.. =)...
вот мой путь к сборки твоей прогой... надеюсь тут ты подчерпнешь моменты чтобы исправить у себя, для наименьшей затраты для сборки программы...
з.ы. компилировал и собирал программу три дня.. =)... не полные конечно.... первое с чем столкнулся - это найти средство сборки.. =).. потом помучался с
version.h... и сильно и долго мучался с готовой но не рабочей программой.. =)... благо из двух вариантов(описанныйх выше) с
version.h, я выбрал первый.. =)... а вот про нехватку нужных флагов для компилятора - я не догадывался.. поэтому и не мог собрать рабочую программу... решил написать опус о своих старанию сюда.. и о нерабочей программе(т.е. явно неправильной сборки)... но пока писал - проверял разные варианты.. и нарвался на правильный.. =)...
надеюсь комунить сей рассказ понравиться.... а может и не понравиться... я получил опыт пока собирал проект... благо привык нажать одну кнопку.. и получить готовую прогу.. конечно для меня многое не понятно.... но все равно... =)... спасибо...