Page 3 of 16

Re: Newlib

Posted: Sat Nov 27, 2010 12:20 am
by Foldl
Прошу прощения. Скомпилированная мною программа также работает. Оказалось, что рамдиск был заполнен, и бинарник копировался неполностью. Основательно все проверю позже.

Re: Newlib

Posted: Sat Nov 27, 2010 1:53 am
by Serge
ключ -fno-builtin-printf больше не нужен.

Re: Newlib

Posted: Wed Dec 01, 2010 12:26 am
by Foldl
Serge

Если добавить ключ -nostdinc, то компиляция прерывается с ошибкой

Code: Select all

../libc/include/stdio.h:34:20: фатальная ошибка: stddef.h: Нет такого файла или каталога
Получается, что newlibc зависима от системной libc?

Re: Newlib

Posted: Wed Dec 01, 2010 10:23 pm
by Serge
Foldl

Скорее это часть компилятора, как stdarg.h и limits.h. Стандартно поставляется с gcc и не входит в исходники libc.

Re: Newlib

Posted: Wed Mar 09, 2011 12:42 pm
by SoUrcerer
На svn лежат исходники newlib, но без makefiles. Где можно на мэйкфайлы посмотреть?

Re: Newlib

Posted: Wed Mar 09, 2011 1:06 pm
by Serge
Я собираю из домашнего репозитория. Там специальный makefile. Очень много обновлено. Добавил оператор __thread, часть libsupc++ и обработчик исключений С++, загрузчик PE. К концу недели постараюсь всё залить.

Re: Newlib

Posted: Sat Mar 12, 2011 12:29 pm
by Serge
Сделал Дллки. В архиве демка Cairo и набор библиотек. Для запуска необходимо
  • Скопировать все *.dll в папку с доступом на чтение из Колибри. Можно использовать несколько папок.
  • Прописать пути в system.env Например PATH=/hd0/1/os/kolibri/shared/:/sys/lib/
    Пути разделяются только двоеточиями :
    Завершающий слеш / обязателен
  • Скопировать system.env в /rd/1/
  • Скопировать libc.obj в /rd/1/lib/
Библиотеки импорта и скрипты для ld - pe_app.lds для приложений и dll.lds для dll соответственно.

DLL линкуется
ld -nostdlib -shared -s -T dll.lds --image-base 0 --out-implib my_dllimp.a -o my_dll.dll $(OBJECTS) libamz.a <import libraries> <my_dll.def>

Приложение линкуется
ld -nostdlib -pie -s -T pe_app.lds --image-base 0 --stack 0x100000 -o my_app.exe $(OBJECTS) libamz.a libcimp.a <import libraries>
Помещается в контейнер
fasm demo.asm my_app и пакуется для полного счастья kpack. DLL тоже можно паковать, но это не рекомендуется - ненужная фрагментация кучи и памяти.

Re: Newlib

Posted: Mon Mar 14, 2011 12:32 pm
by SoUrcerer
Очень вкусно. Но это, как я понимаю, нужно в первую очередь для тяжелых программ, или, по крайней мере, для большого количества программ, использующих одни и те же библиотеки очень плотно?

Re: Newlib

Posted: Fri Mar 18, 2011 11:56 pm
by XVilka
Посмотрите в сторону musl - он заметно легче, быстрее и портируемее чем newlibc - к тому же активно развивается.
Смотрите сравнение с остальными Си библиотеками http://www.etalabs.net/compare_libcs.html

По-моему идеальный вариант для философии Колибри, при полной поддержке С99 стандартов

Для портирования достаточно поменять реализацию вызовов syscall в файле arch/i386/syscall.h

Re: Newlib

Posted: Sat Mar 19, 2011 11:06 am
by Serge
XVilka

Не пойдёт. За newlib стоит RedHat и уже много лет, а это самодеятельная разработка. Таких в сети очень много, появляются и замирают, как только автору надоест. Гарантий никаких.

Re: Newlib

Posted: Thu Mar 31, 2011 9:53 pm
by SoUrcerer
Request: очень хочу макрос fileno.
Желательно версии libc и для статической, и для динамической линковки.
Это единственный undefined reference для программы, позволяющей распаковывать iso-образы.

Re: Newlib

Posted: Thu Mar 31, 2011 10:22 pm
by Serge

Re: Newlib

Posted: Thu Mar 31, 2011 10:42 pm
by SoUrcerer
Ой, спасибо! А можно еще новый libc.obj?

Re: Newlib

Posted: Thu Mar 31, 2011 10:51 pm
by Serge
Там в архиве новый.

Re: Newlib

Posted: Thu Mar 31, 2011 11:03 pm
by SoUrcerer
Прошу прощения, не заметил! Спасибо большое.. Заработало :lol: :P :D