Page 5 of 16

Re: Newlib

Posted: Wed Aug 10, 2011 5:50 am
by SoUrcerer
А 586 версии нет? Ключами можно будет убрать использование cmov,к примеру?

Re: Newlib

Posted: Wed Aug 10, 2011 8:47 am
by Serge
Должно убираться. i686 дефолтная версия для 32-х бит.

Re: Newlib

Posted: Wed Aug 10, 2011 1:56 pm
by Serge
Собранные binutils-2.20 и gcc-4.6.1 заняли 45 Мб. Это с оптимизатором lto и без с++. Но пока как надо не работает. Проблема в том, что gcc не передаёт линковщику дефолтные библиотеки.

Re: Newlib

Posted: Thu Aug 11, 2011 12:30 pm
by Serge
Sorcerer
Тебе надо компиляцию запускать на i586 ? Остальное ключами регулируется.

http://kolibri-pe.googlecode.com/files/kos32.7z binutils-2.20 + gcc-4.6.1 для Линукс. gcc пока ещё mingw32, там везде включены специфические для Win определения. Всё собиралось с sysroot=/home/kos32 но LD не находит библиотеки если не задан путь -L и дефолтную libc не "знает". Всё надо указывать явно. С gcc та же история.

Re: Newlib

Posted: Thu Aug 11, 2011 2:37 pm
by SoUrcerer
Именно. Запускать компиляцию на i586, и код скомпилированный тоже.
Спасибо, так будет гораздо веселее работать!

Re: Newlib

Posted: Sat Aug 13, 2011 6:38 pm
by Serge
Toolchain под Linux. http://kolibri-pe.googlecode.com/files/i586-kos32.7z
Собирал с указанием sysroot=/home/kos32 --disable-sjlj-exceptions --with-dwarf2 --disable-werror
Добавлены встроенные определения __KOLIBRI__ и __KOS32__

Известные недостатки:
gcc берёт дефолтные исходники из /sysroot/i586-kos32/include и библиотеки из /sysroot/i586-kos32/lib
ld берёт библиотеки из /sysroot/lib sysroot/usr/lib
Есть проблема с порядком аргументов в командной строке LD. Желательно указывать статические библиотеки последними в списке аргументов
i568-kos32-ld -o test test.o -lc а не
i568-kos32-ld -lc -o test test.o

Update.
Этот неприятный баг похоже возникает только при статической сборке. Из-за него часто проваливаются тесты ./configure

Re: Newlib

Posted: Sat Aug 13, 2011 7:34 pm
by SoUrcerer
В понедельник попробую, надеюсь.

Re: Newlib

Posted: Sat Aug 13, 2011 8:46 pm
by XVilka
Serge: а чем собирал? есть патчи в паблике?

Re: Newlib

Posted: Sat Aug 13, 2011 9:32 pm
by Serge
Собирал в последней Убунте дефолтным компилятором. Предыдущий патч для binutils-2.20 уже есть на svn.
Очень полезные статьи
http://wiki.osdev.org/GCC_Cross-Compiler
http://wiki.osdev.org/OS_Specific_Toolchain

Re: Newlib

Posted: Sat Aug 13, 2011 9:36 pm
by XVilka
да это я знаю, просто думаю, может добавить поддержку в crosstool-ng.

P.S. патч для binutils я не нашел :(

Re: Newlib

Posted: Mon Aug 15, 2011 2:15 pm
by CleverMouse
"Есть проблема с порядком аргументов в командной строке LD. Желательно указывать статические библиотеки последними в списке аргументов" - это не проблема, а стандартное документированное поведение в gnu:
http://sourceware.org/binutils/docs-2.20/ld/Options.html#index-archive-files_002c-from-cmd-line-54 wrote:The linker will search an archive only once, at the location where it is specified on the command line. If the archive defines a symbol which was undefined in some object which appeared before the archive on the command line, the linker will include the appropriate file(s) from the archive. However, an undefined symbol in an object appearing later on the command line will not cause the linker to search the archive again.

See the -( option for a way to force the linker to search archives multiple times.

You may list the same archive multiple times on the command line.

Re: Newlib

Posted: Mon Aug 15, 2011 3:26 pm
by Serge
CleverMouse
Спасибо за разъяснение. Я это подозревал. Такая проблема возникает только при статической сборке.

Re: Newlib

Posted: Sun Aug 21, 2011 12:27 am
by XVilka
Serge: а можно ссылку на патч к binutils? все перерыл - не нашел. И какие еще правки вносил? Я хочу попробовать добавить цель kolibri в crosstool-ng.

Re: Newlib

Posted: Sun Aug 21, 2011 7:09 am
by Serge
[url]svn://kolibrios.org/programs/develop/binutils[/url]

Re: Newlib

Posted: Sun Aug 21, 2011 11:02 am
by XVilka
Спасибо! Все оказалось очень просто! :)