Tiny C Compiler

...
  • Для той версии fopen,которая в melibc.a надо аогументы передавать таk:

    fogg=fopen(sz_open_file,'rb');

    'rb' в апострофах ,а не в кавычках(хотя в правильном варианте надо в кавычках).
  • andrew_programmer
    Почему это в апострофах? Нужно передавать в кавычках.
    Проблема оказалась в другом - почему-то cc1.exe при компиляции преобразует имена внешних функций из malloc в _malloc@4. С подчеркиванием я бороться научился, а вот что делать с @4 - не понятно. Из-за этого программа не линкуется :(
  • Я пробовал передавать и в кавычках и в опострафах.Если передавать в кавычках,то программа вырубается мгновенно.

    Андрей,что-то не понял,что за cc1.exe ?
    Где malloc преобразуется ?
  • Сделал кое-какие исправления. Новый melibc.a можно скачать по адресу http://shade.msu.ru/~msu-se/melibc.rar
    Новый metcc.exe можно скачать по адресу http://shade.msu.ru/~msu-se/metcc.rar
    Новый mesys.h можно скачать с svn сервера.
  • Программа мгновенно вырубалась из-за ошибки линковки.
    сс1.exe - компилятор си (gcc), который используется при компиляции стандартной библиотеки.
  • Можно этот mesys.h выложить прямо здесь(ввиде текста) ?

    Возможно из-за отсутствия нового mesys.h комбинация

    f=fopen(filename,"r");
    close(f);

    пока не работает.


    P.S.
    Мне ОЧЕНЬ нужно,чтобы в metcc можно было работать с файлами.Я пишу одну научную программу под Колибри,используя metcc и KlbinWin.
  • А ещё желательно переписывание библиотеки на новую 70-ю функцию.
  • andrew_programmer
    Если не обязательно использовать ANSI fopen() fread() то возьми код, который я приводил выше, запиши в файл k_file.asm скомпилируй ФАСМом. Файл линкуется при компиляции программы metcc.exe my_prog.c melibc.a k_file.o -o my_prog
    Если качал исходники ядра то в папке /ac97 переписанный на Си плеер и k_lib.asm с оболочками для системных вызовов.
    make.bat - пример компиляции из нескольких файлов.
  • Serge

    Попробую поэкспериментировать.
  • а где этот svn сервер?
  • O01eg
    svn://kolibrios.org
    andrew_programmer
    В mesys.h нужно удалить атрибут stdcall у процедур malloc, free, realloc.
    Можешь все-таки выслать или выложить весь код - чтобы не устранять ошибки по одной.
    Serge
    Я нашел в компиляторе огромную проблему - раньше неправильно компилился код

    Code: Select all

    int x[10];
    int main()
    {
      x[0]=0;//на выходе будет присвоение нулевому адресу :(
      return 0;
    }
    
    Почему-то компилятор символам из BSS присваивает какой-то очень странный номер секции, из-за чего моя процедура линковки, не найдя такой секции, не применяла соотвествующий релокейшен. На данный момент я поставил, что если у символа очень странный номер секции, то он из BSS. Но с проблемой надо разбираться...
  • halyavin

    Код работающий с файлом я уже выкладывал выше.А вызывается эта функция из main() так:

    int main(......)
    {

    int length_spektr;

    length_spektr=LoadSpektor("/hd/1/spc.dat");

    }

    Где spc.dat - текстовый файл со спектром.Как я говорил выше,в Линукс у меня LoadSpektr() нормально работает.

    Вся остальная часть кода к файлам не имеет никакого отношения.
  • И чем svn:// открывать? А нельзя ли выложить mesys.h где нибудь на HTTP или FTP?
  • http://subversion.tigris.org/project_packages.html - версии svn-клиентов для разных ОС
  • Who is online

    Users browsing this forum: Ahrefs [Bot] and 6 guests