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&