Board.KolibriOS.org

Official KolibriOS board
It is currently Sat Jul 11, 2020 11:06 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 75 posts ]  Go to page Previous 1 2 3 4 5
Author Message
PostPosted: Mon Aug 09, 2010 12:59 pm 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
Со второй попытки собрал под убунтой 10.04 menuetlibc, gcc 4.4.3
Бинарные часики собрались и работают, однако...
Собираю пример из hll.htm, получаю

Code:
/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


если не трудно, наставьте на путь истинный, и да пребудет с вами Сила :)


Top
   
PostPosted: Mon Aug 09, 2010 10:01 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
А если добавить -nostdlib ?


Top
   
PostPosted: Tue Aug 10, 2010 10:34 am 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
Так ведь использую makefile такой же, как и binclock... Вызываются соответсвенно mgcc, mld - где уже есть и nostdinc, и nostdlib.
Сейчас вот выдает
Code:
/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()..


Top
   
PostPosted: Tue Aug 10, 2010 10:45 am 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
Код из статьи diamond'а... Действительно, main() нет. После переименования app_main в main все отлично собралось и даже работает.

Code:
#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;
      }
   }
}



Top
   
PostPosted: Tue Aug 10, 2010 9:25 pm 
Offline
Kernel Developer
User avatar

Joined: Mon Nov 28, 2005 8:00 pm
Posts: 1601
В исходной menuetlibc главная функция звалась не main(), а app_main(). В Колибри-версии в некоторый момент развития главную функцию таки переименовали, на binclock, входящей в комплект поставки, это отразилось, а пример из статьи не обновлялся.

_________________
Ушёл к умным, знающим и культурным людям.


Top
   
PostPosted: Thu Jun 28, 2012 5:31 pm 
Offline
Kernel Developer
User avatar

Joined: Thu Sep 03, 2009 1:52 pm
Posts: 1624
Я прилагаю генератор проектов для VS2010. Генератор спрашивает имя проекта, в котором могут быть только латинские буквы, цифры и дефисы, и путь к fasm, который используется на конечной стадии компиляции. Генератор создаёт в текущей папке подпапку с именем, совпадающим с именем проекта, в которой создаёт файл .sln для студии, основной файл .cpp с примером HelloWorld'а и подпапку с примитивной библиотекой, взятой откуда-то с svn и немного доработанной.

UPD от 13 Nov 2014: минус RTTI в настройках проекта, исправляет проблему с виртуальными функциями.


Attachments:
File comment: Генератор.
makevcproj.7z [13.81 KiB]
Downloaded 174 times
File comment: Исходные тексты генератора.
makevcproj_sources.7z [16.89 KiB]
Downloaded 168 times

_________________
Сделаем мир лучше!
Top
   
PostPosted: Mon Feb 25, 2013 5:27 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5284
Обновил статью диамонда: http://kolibri-n.org/inf/hll/hll.php

Теперь во всех браузерах работают внутренние ссылки, есть подсветка кода, добавил генератор проектов для VS2010 от CleverMouse, обновил ссылки (может пока не все), добавил ссылки на LUA и Pyton.

Хочу ещё добавить инфу о FreeBasic и Delphi. Про newlib.

Пожалуйста, укажите на неточности в статье, я постараюсь исправить.

_________________
Звиздеть не мешки ворочать


Top
   
PostPosted: Mon Feb 25, 2013 7:47 pm 
Offline
User avatar

Joined: Mon Oct 27, 2008 10:10 pm
Posts: 822
Статью всю не читал, но бросилось в глаза то что fasm там старых версий:
под виндовсом - 1.16.14
а в Колибри - 1.16.20, хотя после того интерфейс менялся, добавлялась галочка про отладочную информацию и текстовые поля вместо того хитрого ввода что был раньше


Attachments:
fasm_1_70_03.png
fasm_1_70_03.png [ 3.79 KiB | Viewed 5380 times ]
Top
   
PostPosted: Mon Feb 25, 2013 8:17 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5284
Точно, спасибо.

_________________
Звиздеть не мешки ворочать


Top
   
PostPosted: Mon Feb 25, 2013 9:41 pm 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
Quote:
Компилятор 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, в остальном все так же.


Top
   
PostPosted: Mon Feb 25, 2013 9:53 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5284
Эээ... какой путь? А где сказано, что tcc для Вин, а не Колибри?

_________________
Звиздеть не мешки ворочать


Top
   
PostPosted: Mon Feb 25, 2013 11:27 pm 
Offline

Joined: Tue Oct 05, 2010 6:05 pm
Posts: 216
Статья была написана до появления macro header в macros.inc. Образец кода FASM компилировавшийся на тот момент правильно, теперь застревает на "header db 'HelloWorld test',0", на что регулярно напарываются новички и из раза в раз пишут об этом на форуме. Давно бы пора поправить во всех копиях статьи до которых дотянутся руки header на title или чего-нибудь другое работоспособное.
Зы При правке придётся и скриншот поправить, где "header" виднеется


Top
   
PostPosted: Mon Feb 25, 2013 11:51 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5284
Тоже годное замечание - исправил. Скрин FASM'a обновил. Ссылки на темы про FreeBasic и Delphi добавил. Кратко написал про newlib.

_________________
Звиздеть не мешки ворочать


Top
   
PostPosted: Tue Feb 26, 2013 1:00 pm 
Offline
User avatar

Joined: Tue Aug 25, 2009 4:45 pm
Posts: 797
В вики (для последующего омаркдаунивания).


Top
   
PostPosted: Tue Feb 26, 2013 5:06 pm 
Offline

Joined: Wed May 18, 2005 7:27 pm
Posts: 1001
SoUrcerer wrote:
Путь другой


Leency wrote:
Эээ... какой путь?


svn://kolibrios.org/programs/develop/ktcc//trunk/

http://websvn.kolibrios.org/listing.php ... Ftrunk%2F&


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 75 posts ]  Go to page Previous 1 2 3 4 5

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 8 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited