Newlib

Discussing libraries simplifying applications development
  • ключ -fno-builtin-printf больше не нужен.
  • Serge

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

    Code: Select all

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

    Скорее это часть компилятора, как stdarg.h и limits.h. Стандартно поставляется с gcc и не входит в исходники libc.
  • На svn лежат исходники newlib, но без makefiles. Где можно на мэйкфайлы посмотреть?
  • Я собираю из домашнего репозитория. Там специальный makefile. Очень много обновлено. Добавил оператор __thread, часть libsupc++ и обработчик исключений С++, загрузчик PE. К концу недели постараюсь всё залить.
  • Сделал Дллки. В архиве демка 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 тоже можно паковать, но это не рекомендуется - ненужная фрагментация кучи и памяти.
  • Очень вкусно. Но это, как я понимаю, нужно в первую очередь для тяжелых программ, или, по крайней мере, для большого количества программ, использующих одни и те же библиотеки очень плотно?
  • Посмотрите в сторону musl - он заметно легче, быстрее и портируемее чем newlibc - к тому же активно развивается.
    Смотрите сравнение с остальными Си библиотеками http://www.etalabs.net/compare_libcs.html

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

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

    Не пойдёт. За newlib стоит RedHat и уже много лет, а это самодеятельная разработка. Таких в сети очень много, появляются и замирают, как только автору надоест. Гарантий никаких.
  • Request: очень хочу макрос fileno.
    Желательно версии libc и для статической, и для динамической линковки.
    Это единственный undefined reference для программы, позволяющей распаковывать iso-образы.
  • Ой, спасибо! А можно еще новый libc.obj?
  • Там в архиве новый.
  • Прошу прощения, не заметил! Спасибо большое.. Заработало :lol: :P :D
  • Who is online

    Users browsing this forum: Ahrefs [Bot] and 6 guests