Page 5 of 6
Re: nasm, vc, gcc и другие
Posted: Mon Aug 09, 2010 12:59 pm
by SoUrcerer
Со второй попытки собрал под убунтой 10.04 menuetlibc, gcc 4.4.3
Бинарные часики собрались и работают, однако...
Собираю пример из hll.htm, получаю
Code: Select all
/home/sourcerer/linuxtools/mgcc main.c main.o
main.c: In function ‘draw_window’:
main.c:14: warning: passing argument 4 of ‘__menuet__write_text’ discards qualifiers from pointer target type
/home/sourcerer/include/menuet/os.h:20: note: expected ‘char *’ but argument is of type ‘const char *’
/home/sourcerer/linuxtools/mld demo main.o -n -Map demo.map
ld: cannot find -lc
make: *** [demo] Ошибка 1
если не трудно, наставьте на путь истинный, и да пребудет с вами Сила
Re: nasm, vc, gcc и другие
Posted: Mon Aug 09, 2010 10:01 pm
by Serge
А если добавить -nostdlib ?
Re: nasm, vc, gcc и другие
Posted: Tue Aug 10, 2010 10:34 am
by SoUrcerer
Так ведь использую makefile такой же, как и binclock... Вызываются соответсвенно mgcc, mld - где уже есть и nostdinc, и nostdlib.
Сейчас вот выдает
Code: Select all
/home/sourcerer/me/lib/libc.a(crt1.o): In function `__crt1_startup':
crt1.c:(.text+0x37): undefined reference to `main'
make: *** [demo] Ошибка 1
Буду разбираться, чем отличается код binclock от стандартного примера...
upd: о_О а в нем нет main()..
Re: nasm, vc, gcc и другие
Posted: Tue Aug 10, 2010 10:45 am
by SoUrcerer
Код из статьи diamond'а... Действительно, main() нет. После переименования app_main в main все отлично собралось и даже работает.
Code: Select all
#include <menuet/os.h>
const char header[] = "HelloWorld test";
const char string[] = "Hello, World!";
void draw_window(void)
{
// start redraw
__menuet__window_redraw(1);
// define&draw window
__menuet__define_window(10,40,150,50,
0x33FFFFFF,0,(__u32)header);
// display string
__menuet__write_text(30,10,0x80000000,string,0);
// end redraw
__menuet__window_redraw(2);
}
void app_main(void)
{
draw_window();
for (;;)
{
switch (__menuet__wait_for_event())
{
case 1:
draw_window();
break;
case 2:
// key pressed, read it and ignore
__menuet__getkey();
break;
case 3:
// button pressed; we have only one button, close
return;
}
}
}
Re: nasm, vc, gcc и другие
Posted: Tue Aug 10, 2010 9:25 pm
by diamond
В исходной menuetlibc главная функция звалась не main(), а app_main(). В Колибри-версии в некоторый момент развития главную функцию таки переименовали, на binclock, входящей в комплект поставки, это отразилось, а пример из статьи не обновлялся.
Re: nasm, vc, gcc и другие
Posted: Thu Jun 28, 2012 5:31 pm
by CleverMouse
Я прилагаю генератор проектов для VS2010. Генератор спрашивает имя проекта, в котором могут быть только латинские буквы, цифры и дефисы, и путь к fasm, который используется на конечной стадии компиляции. Генератор создаёт в текущей папке подпапку с именем, совпадающим с именем проекта, в которой создаёт файл .sln для студии, основной файл .cpp с примером HelloWorld'а и подпапку с примитивной библиотекой, взятой откуда-то с svn и немного доработанной.
UPD от 13 Nov 2014: минус RTTI в настройках проекта, исправляет проблему с виртуальными функциями.
Re: nasm, vc, gcc и другие
Posted: Mon Feb 25, 2013 5:27 pm
by Leency
Обновил статью диамонда:
http://kolibri-n.org/inf/hll/hll.php
Теперь во всех браузерах работают внутренние ссылки, есть подсветка кода, добавил генератор проектов для VS2010 от CleverMouse, обновил ссылки (может пока не все), добавил ссылки на LUA и Pyton.
Хочу ещё добавить инфу о FreeBasic и Delphi. Про newlib.
Пожалуйста, укажите на неточности в статье, я постараюсь исправить.
Re: nasm, vc, gcc и другие
Posted: Mon Feb 25, 2013 7:47 pm
by IgorA
Статью всю не читал, но бросилось в глаза то что fasm там старых версий:
под виндовсом - 1.16.14
а в Колибри - 1.16.20, хотя после того интерфейс менялся, добавлялась галочка про отладочную информацию и текстовые поля вместо того хитрого ввода что был раньше
Re: nasm, vc, gcc и другие
Posted: Mon Feb 25, 2013 8:17 pm
by Leency
Точно, спасибо.
Re: nasm, vc, gcc и другие
Posted: Mon Feb 25, 2013 9:41 pm
by SoUrcerer
Компилятор TCC был доработан для генерации Колибри-бинарников. Также написана некоторая часть C RTL на базе функций Колибри. Исходники как самого компилятора, так и RTL доступны на svn-сервере Колибри: svn://kolibrios.org/programs/develop/metcc/trunk.
Для начала надо скомпилировать сам компилятор
Для этого нужно что-нибудь из MinGW/cygwin/linux, где есть компилятор GCC. При наличии такового нужно в папке source сказать
gcc tcc.c -o tcc.exe
Путь другой, вдобавок tcc получается для Колибри, а не для Windows, в остальном все так же.
Re: nasm, vc, gcc и другие
Posted: Mon Feb 25, 2013 9:53 pm
by Leency
Эээ... какой путь? А где сказано, что tcc для Вин, а не Колибри?
Re: nasm, vc, gcc и другие
Posted: Mon Feb 25, 2013 11:27 pm
by lev
Статья была написана до появления macro header в macros.inc. Образец кода FASM компилировавшийся на тот момент правильно, теперь застревает на "header db 'HelloWorld test',0", на что регулярно напарываются новички и из раза в раз пишут об этом на форуме. Давно бы пора поправить во всех копиях статьи до которых дотянутся руки header на title или чего-нибудь другое работоспособное.
Зы При правке придётся и скриншот поправить, где "header" виднеется
Re: nasm, vc, gcc и другие
Posted: Mon Feb 25, 2013 11:51 pm
by Leency
Тоже годное замечание - исправил. Скрин FASM'a обновил. Ссылки на темы про FreeBasic и Delphi добавил. Кратко написал про newlib.
Re: nasm, vc, gcc и другие
Posted: Tue Feb 26, 2013 1:00 pm
by XVilka
В вики (для последующего омаркдаунивания).
Re: nasm, vc, gcc и другие
Posted: Tue Feb 26, 2013 5:06 pm
by Wildwest
SoUrcerer wrote:
Путь другой
Leency wrote:
Эээ... какой путь?
svn://kolibrios.org/programs/develop/ktcc//trunk/
http://websvn.kolibrios.org/listing.php ... 2Ftrunk%2F&