nasm, vc, gcc и другие

Applications development, KoOS API questions
  • Пробовал скомпилировать menuetlibc. As ругается на ceil.s:

    Code: Select all

    ....
    --- Making in /data/KolibriOS/dev/src/libc/ansi/math ---                                    
    cpp -nostdinc -I/data/KolibriOS/dev/include ceil.s -o ceil.sx  -DMENUETDEV=/data/KolibriOS/dev -D__DEV_CONFIG_H=\"/data/KolibriOS/dev/config.h\"                     
    as ceil.sx -o ceil.o
    ceil.s: Assembler messages:                                
    ceil.s:4: Error: suffix or operands invalid for `push'
    ceil.s:22: Error: suffix or operands invalid for `pop'
    
    Причём в ceil.s эти строчки:

    Code: Select all

    pushl %ebp
    ...
    popl %ebp
    
    Может кто-нибудь знает, что с этим делать?
  • Это значит, что gcc компилит в 64-битном режиме. Для 64-битных систем нужно ещё указывать ключ -m32.
    Ушёл к умным, знающим и культурным людям.
  • Спасибо. Теперь библиотеку скомпилировал (правда пришлось делать довольно много правок и кроме того поиск библиотек не работает).
  • Понял, что мне очень сложно перейти на asm, 5-6 лет программирования на c, c++, perl, php и подобных сказывается. захотел по инструкции сделать возможным написание программ через gcc , при компиляции в 1ом месте появляется error и дельше их куча

    Code: Select all

    --- Making in /home/alexus/ZAURUS/kosgcc/src/libc/ansi/stdio ---
    /home/alexus/ZAURUS/kosgcc/linuxtools/mgcc allocfil.c allocfil.o  -O2 -fomit-frame-pointer
    In file included from /home/alexus/ZAURUS/kosgcc/include/stdio.h:11,
                     from allocfil.c:2:
    /home/alexus/ZAURUS/kosgcc/include/menuet/os.h:41: warning: ‘packed’ attribute ignored for field of type ‘char[12]’
    /home/alexus/ZAURUS/kosgcc/include/menuet/os.h:159: warning: ‘packed’ attribute ignored for field of type ‘__u8’
    /home/alexus/ZAURUS/kosgcc/include/menuet/os.h:160: warning: ‘packed’ attribute ignored for field of type ‘__u8[3]’
    In file included from /home/alexus/ZAURUS/kosgcc/include/stdio.h:19,
                     from allocfil.c:2:
    /home/alexus/ZAURUS/kosgcc/include/dos.h:198: warning: ‘packed’ attribute ignored for field of type ‘char[21]’
    /home/alexus/ZAURUS/kosgcc/include/dos.h:199: warning: ‘packed’ attribute ignored for field of type ‘unsigned char’
    /home/alexus/ZAURUS/kosgcc/include/dos.h:203: warning: ‘packed’ attribute ignored for field of type ‘char[256]’
    /home/alexus/ZAURUS/kosgcc/linuxtools/mgcc doprnt.c doprnt.o  -O2 -fomit-frame-pointer
    In file included from /home/alexus/ZAURUS/kosgcc/include/stdio.h:11,
    ...//Посыпались ероры

    Code: Select all

    In file included from /home/alexus/ZAURUS/kosgcc/include/stdio.h:19,
                     from ctime.c:6:
    /home/alexus/ZAURUS/kosgcc/include/dos.h:198: warning: ‘packed’ attribute ignored for field of type ‘char[21]’
    /home/alexus/ZAURUS/kosgcc/include/dos.h:199: warning: ‘packed’ attribute ignored for field of type ‘unsigned char’
    /home/alexus/ZAURUS/kosgcc/include/dos.h:203: warning: ‘packed’ attribute ignored for field of type ‘char[256]’
    ctime.c:97: error: static declaration of ‘tzsetwall’ follows non-static declaration
    /home/alexus/ZAURUS/kosgcc/include/time.h:90: error: previous declaration of ‘tzsetwall’ was here
    make[4]: Leaving directory `/home/alexus/ZAURUS/kosgcc/src/libc/ansi/time'
    make[3]: Leaving directory `/home/alexus/ZAURUS/kosgcc/src/libc/ansi'
    make -C ansif
    make[3]: Entering directory `/home/alexus/ZAURUS/kosgcc/src/libc/ansif'
    --- Making in /home/alexus/ZAURUS/kosgcc/src/libc/ansif ---
    make[3]: Leaving directory `/home/alexus/ZAURUS/kosgcc/src/libc/ansif'
    make -C compat
    make[3]: Entering directory `/home/alexus/ZAURUS/kosgcc/src/libc/compat'
    make -C bsd
    make[4]: Entering directory `/home/alexus/ZAURUS/kosgcc/src/libc/compat/bsd'
    --- Making in /home/alexus/ZAURUS/kosgcc/src/libc/compat/bsd ---
    
  • Малополезная информация. Абсолютно непонятно в какой системе и какой версией компиляторы ты это всё собирал.
    Я раньше собирал эту библиотеку в OpenSuse 10.1 x86-32 gcc 3.x. На x86-64 библиотека не собирается. В gcc 4.х компилятор стал более строгим и код у меня перестал собираться. Исправлением участков кода, которые не нравятся компилятору, я не занимался(не до этого было). Всё оставлял на потом. Alexus, раз ты разбираешься в C/C++ и в Linux, то по идее сможешь найти те участки кода, которые не нравяться gcc.
    KolibriOS-перспективная ос!
    Kolibri is best operation system in the world!
  • На x86-64 библиотека не собирается.
    Неправда. Собрать конечно сложнее из-за дурацкой системы сборки и т.п., но таки вполне собирается с флагами -m32 и -melf_i386..
  • Собирал я с этими флагами. Запарился.
    KolibriOS-перспективная ос!
    Kolibri is best operation system in the world!
  • Alexus wrote:Понял, что мне очень сложно перейти на asm, 5-6 лет программирования на c, c++, perl, php и подобных сказывается
    Ассемблер может казаться сложным пока не начнешь на нём писать. После того как напишешь первую, пусть и простую программу на асм под Колибри, ты будешь смотреть на ассемблер совсем по-другому. Кстати, один из авторов языка C говорил, что лучший способ выучить язык программирования, это начать писать на нем.

    Лог не полный. На предупреждения не обращай внимания. Смотри причину ошибок. В приведеном куске лога видна только одна ошибка
    Alexus wrote:

    Code: Select all

    ctime.c:97: error: static declaration of ‘tzsetwall’ follows non-static declaration/home/alexus/ZAURUS/kosgcc/include/time.h:90: error: previous declaration of ‘tzsetwall’ was here
    вобщем-то стандартная, её решение смотри вот в этой теме viewtopic.php?f=23&t=1355.
  • Написал небольшой скрипт на перле, который позволяет генерируемый gcc ассемблерный код(AT&T) преобразовывать в код для колибри и fasm (Intel), всё довольно-таки просто, на данный момент стремился чтобы заработал болие ли менее солидный хеллоу ворлд. Пока что всё не ахти как надёжно и удобно)) но так я делаю его 2ой день, а обдумываю 3й.
    Все результаты выложил сюда ftp://kolibrios.org/upload/Alexus/
    И опубликовал процесс с комментариями в блоге http://linuxoidalexus.blogspot.com/2010 ... piler.html
    Результат hello, world :
    Image
  • Ушёл к умным, знающим и культурным людям.
  • Близко но не то), у меня заточено именно под колибри.
    А последняя ссылка для нас вообще бесполезна).
  • а мне идея нравится (хотя, конечно gcc может производить асм-листинг и в формате Intel). надо бы проверить, установлен ли у меня на нетбуке perl.

    1) было бы неплохо написать обёртки для всех системных функций (чтобы просто подключать файлик с ними), могу поделиться своими
    2) было бы неплохо обрабатывать командную строку, чтобы вызывать int main(int argc, char *argv[])
    3) это не компилер, это транслятор...
  • Если на нетбуке линукс, то скорее всего стоит. kcc не использует сторонних модулей)

    1) Да это именно то чем я собирался заняться когда избавлюсь от некоторых недоработок и ошибок, они периодически всплывают. Самое приятное, что легче всего их находить когда пишешь программы. Был бы благодарен за эту помощь
    2) да я думаю, что смогу это прикрутить
    3) да я понимаю, что это транслятор)) если где-то написал иначе, то извиняюсь описка)
  • Alexus
    вот обёртки сис. вызовов, которые я использую. некоторые ужасны, но по-другому я не знаю как реализовать. надеюсь, тебе будут полезны.
    Attachments
    kolibri_sys.zip (2.41 KiB)
    Downloaded 381 times
  • Who is online

    Users browsing this forum: No registered users and 2 guests