Page 2 of 16

Re: Newlib

Posted: Fri Oct 29, 2010 5:16 pm
by Asper
Да .

Re: Newlib

Posted: Fri Oct 29, 2010 6:04 pm
by Mario
А браузер? :mrgreen:

Re: Newlib

Posted: Fri Oct 29, 2010 8:02 pm
by Albom
Serge
Спасибо за либу! Будет свободное время - ОБЯЗАТЕЛЬНО попробую. :)

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

Re: Newlib

Posted: Fri Oct 29, 2010 9:05 pm
by Serge
Главное не путать С и С++. Идеологически это совершенно разные языки.

Re: Newlib

Posted: Fri Oct 29, 2010 9:14 pm
by Albom
Идеалогия идеолией (да, есть такое), но синтаксис С++ таков, что если выделить из С++ некую часть, то это подмножество будет почти совместимо с С. И так думаю не только я (на днях консультировался у одного известного программиста с 30-летним стажем).

Re: Newlib

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

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

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

Re: Newlib

Posted: Fri Oct 29, 2010 9:46 pm
by Albom
Mario
да, поняли не совсем правильно. :) но от учебника Павловской отказываться не стОит - там есть отличное описание стандартных ф-ций С.

Serge
попробовал. пока успехов нет. если компилировать только через gcc, то mingw не понимает параметры --image-base и --stack. попробовал с помощью батника:

Code: Select all

 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.

Re: Newlib

Posted: Fri Oct 29, 2010 10:14 pm
by Serge
Для сборки libtest

Code: Select all

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 в слайдовом режиме.

Re: Newlib

Posted: Fri Oct 29, 2010 10:33 pm
by Serge
Обновил архив с libc и добавил скомпилированные библиотеки ffmpeg. Скачать можно здесь

Re: Newlib

Posted: Sat Oct 30, 2010 2:09 pm
by Asper
Serge wrote:Обновил архив с libc и добавил скомпилированные библиотеки ffmpeg.
Замечательно, теперь можно плееры делать на любой вкус и цвет, да и в игры видео интегрировать например. :)

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

Re: Newlib

Posted: Mon Nov 01, 2010 3:56 pm
by <Lrz>
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)

Re: Newlib

Posted: Mon Nov 01, 2010 11:44 pm
by Serge
<Lrz>

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

Re: Newlib

Posted: Wed Nov 03, 2010 10:46 pm
by SoUrcerer

Code: Select all

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.
Такие дела :(

Re: Newlib

Posted: Thu Nov 04, 2010 1:03 am
by bw
Линуксоидный ld, из коробки, как бэ не умеет PE (что там про image-base, я не очень в курсе, наверное сюда же). Так что тут два варианта, колдовать с пересборкой ld (binutils?!), либо, что я считаю правильнее, брать mingw32 под линух, такой есть.

..bw

Re: Newlib

Posted: Fri Nov 26, 2010 11:53 pm
by Foldl
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. Уже собранный бинарник из архива при этом работает.