Board.KolibriOS.org

Official KolibriOS board
It is currently Fri Dec 13, 2019 11:58 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 226 posts ]  Go to page Previous 1 2 3 4 516 Next
Author Message
 Post subject: Re: Newlib
PostPosted: Fri Oct 29, 2010 5:16 pm 
Offline
User avatar

Joined: Fri Jun 27, 2008 3:22 pm
Posts: 988
Да .


Top
   
 Post subject: Re: Newlib
PostPosted: Fri Oct 29, 2010 6:04 pm 
А браузер? :mrgreen:


Top
   
 Post subject: Re: Newlib
PostPosted: Fri Oct 29, 2010 8:02 pm 
Offline
Mentor
User avatar

Joined: Tue Jan 15, 2008 11:27 am
Posts: 752
Serge
Спасибо за либу! Будет свободное время - ОБЯЗАТЕЛЬНО попробую. :)

Mario
Самый лучший ИМХО учебник по Си можно скачать здесь - http://publ.lib.ru/ARCHIVES/P/PAVLOVSKA ... T._A..html
Потом, думаю, идёт книга от создателей языка (Кернигана и Ритчи).
По С++ читать нужно Страуструпа...


Top
   
 Post subject: Re: Newlib
PostPosted: Fri Oct 29, 2010 9:05 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Главное не путать С и С++. Идеологически это совершенно разные языки.


Last edited by Serge on Fri Oct 29, 2010 9:50 pm, edited 1 time in total.

Top
   
 Post subject: Re: Newlib
PostPosted: Fri Oct 29, 2010 9:14 pm 
Offline
Mentor
User avatar

Joined: Tue Jan 15, 2008 11:27 am
Posts: 752
Идеалогия идеолией (да, есть такое), но синтаксис С++ таков, что если выделить из С++ некую часть, то это подмножество будет почти совместимо с С. И так думаю не только я (на днях консультировался у одного известного программиста с 30-летним стажем).


Top
   
 Post subject: Re: Newlib
PostPosted: Fri Oct 29, 2010 9:28 pm 
Albom wrote:
Самый лучший ИМХО учебник по Си можно скачать здесь - http://publ.lib.ru/ARCHIVES/P/PAVLOVSKA ... T._A..html
Потом, думаю, идёт книга от создателей языка (Кернигана и Ритчи).
По С++ читать нужно Страуструпа...

Спасибо за информацию. :)

Я так понимаю меня не совсем правильно поняли (судя по реакции) - я не собираюсь писать на С или С++ программы. У меня есть самый лучший, самый замечательнейший, и самый мощный инструмент - FASM. Теоретически я могу на нем написать все - другой вопрос сколько это займет времени и хватит ли моего уровня образования. Бинарные деревья такие... бинарные. :wink:

Что С, что С++, что C# интересуют меня исключительно с целью натырить кода для библиотек, которые я потом смогу использовать в FASM. Глупо не пользоваться наработанными вещами, реализация которых на FASM потребовала бы значительного времени и немалых усилий. Другие же вещи я достаточно легко и быстро пишу на FASM - в том числе и GUI элементы. Вот как-то так...


Top
   
 Post subject: Re: Newlib
PostPosted: Fri Oct 29, 2010 9:46 pm 
Offline
Mentor
User avatar

Joined: Tue Jan 15, 2008 11:27 am
Posts: 752
Mario
да, поняли не совсем правильно. :) но от учебника Павловской отказываться не стОит - там есть отличное описание стандартных ф-ций С.

Serge
попробовал. пока успехов нет. если компилировать только через gcc, то mingw не понимает параметры --image-base и --stack. попробовал с помощью батника:
Code:
 gcc -c main.c
 ld -nostdlib -T kos.ld -o out.kex --image-base 0 --stack 8192 main.o libc.a
 objcopy out.kex -O binary

Скомпилировалось. KlbrInWin из-за MENUET02 в заголовке не запустил. Изменил в редакторе на 1. Некоторый код выполняется (не знаю, работает или нет - не создалась консоль при вызове printf), некоторый вылетает.
Что посоветуешь?

P.S. как использовать те инклуды, что в архиве? если изменяю в программе #include <stdio.h> на #include "include/stdio.h", то компилятор не находит newlib.h.


Top
   
 Post subject: Re: Newlib
PostPosted: Fri Oct 29, 2010 10:14 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Для сборки libtest
Code:
gcc -c -O2 -fno-builtin-printf -fomit-frame-pointer -I/kos/libs/libc/include main.c -o main.o
gcc -c -O2 -fno-builtin-printf -fomit-frame-pointer -I/kos/libs/libc/include error.c -o error.o
ld -nostdlib -T kos.ld -o libtest.exe --image-base 0 --stack 0x100000 main.o error.o libc.a
С ключом компилятора -I надо указать путь к заголовочным файлам newlib. У меня стоят Msys (mingw32 с никсовыми утилитами) и Codeblocks. Редактировать в нём неудобно, а собирать очень даже.

Консоль пока не реализована, весь вывод идет на доску отладки. Появится консоль - stdout будет направляться на неё. Размер стека лучше не ограничивать. Я сделаю динамическое выделение стека, как и для потоков. В этом случае стек основной программы будет ограничен неприсутствующими страницами - будет дополнительная защита от переполнения стека. И лишняя физическая память не будет выделяться.

Править заголовок не очень удачная идея. Он ведь специально для программм с TLS. Со старым заголовком многопоточные не будут работать точно.
В Qemu всё замечательно работает. Даже fplay в слайдовом режиме.


Top
   
 Post subject: Re: Newlib
PostPosted: Fri Oct 29, 2010 10:33 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Обновил архив с libc и добавил скомпилированные библиотеки ffmpeg. Скачать можно здесь


Top
   
 Post subject: Re: Newlib
PostPosted: Sat Oct 30, 2010 2:09 pm 
Offline
User avatar

Joined: Fri Jun 27, 2008 3:22 pm
Posts: 988
Serge wrote:
Обновил архив с libc и добавил скомпилированные библиотеки ffmpeg.

Замечательно, теперь можно плееры делать на любой вкус и цвет, да и в игры видео интегрировать например. :)

Mario
Я в сеть не с домашнего компа сейчас выхожу. HTMLv вполне себе браузер, только CSS, XHTML и нормальный вывод изображений и позиционирование контента сделать надо. :)


Top
   
 Post subject: Re: Newlib
PostPosted: Mon Nov 01, 2010 3:56 pm 
Offline
Kernel Optimizer
User avatar

Joined: Mon Jan 16, 2006 7:58 pm
Posts: 657
ld -nostdlib -T kos.ld -o libtest.exe --image-base 0 --stack 0x100000 main.o error.o libc.a
после этой комманды получаю:
error.o:error.c:(.text+0xd): undefined reference to `_imp___iob'
error.o:error.c:(.text+0x8f): undefined reference to `_flsbuf'
error.o:error.c:(.text+0x100): undefined reference to `_imp___iob'

пакет mingw 5.1.6 (gcc 4.5.0)


Attachments:
File comment: main.o + error.o
main+error.rar [1.84 KiB]
Downloaded 105 times
Top
   
 Post subject: Re: Newlib
PostPosted: Mon Nov 01, 2010 11:44 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
<Lrz>

_imp___iob - ссылка на импортируемые функции. Надо указывать путь к заголовочным файлам Newlib.


Top
   
 Post subject: Re: Newlib
PostPosted: Wed Nov 03, 2010 10:46 pm 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
Code:
sourcerer@sourcerer-laptop ~/libc/test $ ls
error.c  error.h  main.c
sourcerer@sourcerer-laptop ~/libc/test $ gcc -c -O2 -fno-builtin-printf -fomit-frame-pointer -I ../include main.c -o main.o
sourcerer@sourcerer-laptop ~/libc/test $ ls
error.c  error.h  main.c  main.o
sourcerer@sourcerer-laptop ~/libc/test $ gcc -c -O2 -fno-builtin-printf -fomit-frame-pointer -I ../include error.c -o error.o
error.c: In function ‘error_tail’:
error.c:60: warning: incompatible implicit declaration of built-in function ‘_exit’
sourcerer@sourcerer-laptop ~/libc/test $ ls
error.c  error.h  error.o  main.c  main.o
sourcerer@sourcerer-laptop ~/libc/test $ ld -nostdlib -T ../kos.ld -o libtest.exe --image-base 0 --stack 0x100000 main.o error.o ../libc.a
ld: unrecognized option '--image-base'
ld: use the --help option for usage information
sourcerer@sourcerer-laptop ~/libc/test $ ld --version
GNU ld (GNU Binutils for Ubuntu) 2.20.1-system.20100303
Copyright 2009 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License version 3 or (at your option) a later version.
This program has absolutely no warranty.

Такие дела :(


Top
   
 Post subject: Re: Newlib
PostPosted: Thu Nov 04, 2010 1:03 am 
Offline
User avatar

Joined: Thu Mar 01, 2007 4:16 pm
Posts: 426
Линуксоидный ld, из коробки, как бэ не умеет PE (что там про image-base, я не очень в курсе, наверное сюда же). Так что тут два варианта, колдовать с пересборкой ld (binutils?!), либо, что я считаю правильнее, брать mingw32 под линух, такой есть.

..bw


Top
   
 Post subject: Re: Newlib
PostPosted: Fri Nov 26, 2010 11:53 pm 
Offline

Joined: Thu Nov 25, 2010 8:26 pm
Posts: 41
Serge wrote:
Для сборки libtest
Код:
gcc -c -O2 -fno-builtin-printf -fomit-frame-pointer -I/kos/libs/libc/include main.c -o main.o
gcc -c -O2 -fno-builtin-printf -fomit-frame-pointer -I/kos/libs/libc/include error.c -o error.o
ld -nostdlib -T kos.ld -o libtest.exe --image-base 0 --stack 0x100000 main.o error.o libc.a
С ключом компилятора -I надо указать путь к заголовочным файлам newlib.


Собрал в Линуксе libtest кросскомпилятором.
mingw32-gcc -c -fno-builtin-printf -fomit-frame-pointer -I../include main.c -o main.o
mingw32-gcc -c -fno-builtin-printf -fomit-frame-pointer -I../include error.c -o error.o
mingw32-ld -nostdlib -T ../kos.ld -o libtest.exe --image-base 0 --stack 0x100000 main.o error.o ../libc.a
mingw32-objcopy -O binary libtest.exe
mv libtest.exe libtest.kex

В итоге libtest падает по pagefault. Уже собранный бинарник из архива при этом работает.


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

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 2 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