Page 3 of 6

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

Posted: Fri Oct 31, 2008 2:12 pm
by diamond
Serge wrote:Линкуйте wlink c ключами output raw op offset=0 op OBJALIGN=16 и будет вам счастье.
Если нет wlink - пишите.
Тогда придётся забыть про LTCG, link-time code generation - это только Microsoft'овский link умеет. Не, видимо, лучшее решение - как предложил bw, линковать с релоками и перемещать в pe2kos.

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

Posted: Thu May 28, 2009 2:03 pm
by vkos
Пробовал скомпилировать 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
Может кто-нибудь знает, что с этим делать?

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

Posted: Thu May 28, 2009 2:47 pm
by diamond
Это значит, что gcc компилит в 64-битном режиме. Для 64-битных систем нужно ещё указывать ключ -m32.

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

Posted: Fri May 29, 2009 10:31 pm
by vkos
Спасибо. Теперь библиотеку скомпилировал (правда пришлось делать довольно много правок и кроме того поиск библиотек не работает).

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

Posted: Tue Feb 02, 2010 6:41 pm
by Alexus
Понял, что мне очень сложно перейти на 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 ---

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

Posted: Tue Feb 02, 2010 7:53 pm
by andrew_programmer
Малополезная информация. Абсолютно непонятно в какой системе и какой версией компиляторы ты это всё собирал.
Я раньше собирал эту библиотеку в OpenSuse 10.1 x86-32 gcc 3.x. На x86-64 библиотека не собирается. В gcc 4.х компилятор стал более строгим и код у меня перестал собираться. Исправлением участков кода, которые не нравятся компилятору, я не занимался(не до этого было). Всё оставлял на потом. Alexus, раз ты разбираешься в C/C++ и в Linux, то по идее сможешь найти те участки кода, которые не нравяться gcc.

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

Posted: Tue Feb 02, 2010 8:31 pm
by vkos
На x86-64 библиотека не собирается.
Неправда. Собрать конечно сложнее из-за дурацкой системы сборки и т.п., но таки вполне собирается с флагами -m32 и -melf_i386..

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

Posted: Tue Feb 02, 2010 8:36 pm
by andrew_programmer
Собирал я с этими флагами. Запарился.

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

Posted: Tue Feb 02, 2010 8:38 pm
by Asper
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.

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

Posted: Tue Feb 09, 2010 11:33 pm
by Alexus
Написал небольшой скрипт на перле, который позволяет генерируемый gcc ассемблерный код(AT&T) преобразовывать в код для колибри и fasm (Intel), всё довольно-таки просто, на данный момент стремился чтобы заработал болие ли менее солидный хеллоу ворлд. Пока что всё не ахти как надёжно и удобно)) но так я делаю его 2ой день, а обдумываю 3й.
Все результаты выложил сюда ftp://kolibrios.org/upload/Alexus/
И опубликовал процесс с комментариями в блоге http://linuxoidalexus.blogspot.com/2010 ... piler.html
Результат hello, world :
Image

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

Posted: Wed Feb 10, 2010 4:05 pm
by diamond

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

Posted: Wed Feb 10, 2010 4:10 pm
by Alexus
Близко но не то), у меня заточено именно под колибри.
А последняя ссылка для нас вообще бесполезна).

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

Posted: Wed Feb 10, 2010 9:36 pm
by Albom
а мне идея нравится (хотя, конечно gcc может производить асм-листинг и в формате Intel). надо бы проверить, установлен ли у меня на нетбуке perl.

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

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

Posted: Thu Feb 11, 2010 12:17 am
by Alexus
Если на нетбуке линукс, то скорее всего стоит. kcc не использует сторонних модулей)

1) Да это именно то чем я собирался заняться когда избавлюсь от некоторых недоработок и ошибок, они периодически всплывают. Самое приятное, что легче всего их находить когда пишешь программы. Был бы благодарен за эту помощь
2) да я думаю, что смогу это прикрутить
3) да я понимаю, что это транслятор)) если где-то написал иначе, то извиняюсь описка)

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

Posted: Thu Feb 11, 2010 7:39 pm
by Albom
Alexus
вот обёртки сис. вызовов, которые я использую. некоторые ужасны, но по-другому я не знаю как реализовать. надеюсь, тебе будут полезны.