LINUX.ORG.RU

[gentoo] Несколько вопросов по кросс-компиляции

 


0

1

Хочу за две недели установить gentoo на OpenMoko.

И у меня возникли такие вопросы:

1) При использовании
--buildpkgonly (-B)
Creates binary packages for all ebuilds processed without actually merging the packages. This comes with the caveat that all build-time dependencies must already be emerged on the system.
как собрать все DEPEND из всех пакетов для того, чтобы собрать корневую среду билд-сервера? (при этом должен обрабатываться синтаксис версий и слотов)

Если это делать не вручную, а автоматически при помощи
--buildpkg (-b)
Tells emerge to build binary packages for all ebuilds processed in addition to actually merging the packages.
то пакеты входящие в DEPEND будут собираться при помощи основной системы сборки или при помощи toolchain для выбранного TARGET?

2) Как заставить genkernel собирать ядро для кросс-компиляции?

3) Как настраивать флаги в sysroot при помощи ufed?

>как собрать все DEPEND из всех пакетов для того, чтобы собрать корневую среду билд-сервера? (при этом должен обрабатываться синтаксис версий и слотов)
-B не предназначен для создания большого кол-ва пакетов, по причине которую ты уже указал, используй -b

то пакеты входящие в DEPEND будут собираться при помощи основной системы сборки или при помощи toolchain для выбранного TARGET?

Эти флаги не влияют на используемый toolchain вобще, всё устанавливается через переменные среды.

Почитай вот это: http://www.gentoo.org/proj/en/base/embedded/cross-development.xml

ufed

Если этот ufed понимает переменную ROOT, то так: ROOT=/path/to/sysroot ufed

Nao ★★★★★
()
Ответ на: комментарий от Nao

Почитай вот это

уже читал
http://www.gentoo.org/proj/en/base/embedded/handbook/index.xml
http://gentoo.mindzoo.de/index.cgi/wiki/cross-compiling

то пакеты входящие в DEPEND будут собираться при помощи

основной системы сборки или при помощи toolchain для выбранного TARGET?

флаги emerge не влияют на используемый toolchain вобще,

всё устанавливается через переменные среды


Тогда мне не ясно, как это работает. Допустим в DEPEND прописан какой-нибудь yacc, я компилирую с
CHOST=x86_64-pc-linux-gnu
на
CTARGET=armv4tl-softfloat-linux-gnueabi
то yacc скомпилируется в другую архитектуру и не сможет запуститься на машине, которая компилирует.

ArsenShnurkov
() автор топика

Достал из пыльного шкафа crossdev и начал было собирать тулчейн, но теперь понял что ТС это нужно не из интереса, а для троллинга. Этом мой последний пост в этом треде.

Nao ★★★★★
()
Ответ на: комментарий от Nao

Не собирается для целевой архитектуры sys-devel/make-3.81-r1
http://bugs.gentoo.org/show_bug.cgi?id=302455

пишет
job.c: In function 'construct_command_argv_internal':
job.c:2713: error: 'PAGE_SIZE' undeclared (first use in this function)
job.c:2713: error: (Each undeclared identifier is reported only once
job.c:2713: error: for each function it appears in.)
make[2]: *** [job.o] Error 1

ArsenShnurkov
() автор топика
Ответ на: комментарий от ArsenShnurkov

Не собирается sys-devel/make-3.81-r1


Установить командой
CPPFLAGS='-DPAGE_SIZE=«sysconf(_SC_PAGE_SIZE)»' emerge-armv4tl-softfloat-linux-gnueabi -1av make
продолжить сборку

ArsenShnurkov
() автор топика
Ответ на: комментарий от Nao

Не устанавливается sys-apps/man-1.6f-r4,
если в make.conf не прописать строго
LINGUAS=«en»
(если добавить ru - говорит, что не найдена цель make для языка ru)

ArsenShnurkov
() автор топика
Ответ на: комментарий от ArsenShnurkov

echo «>dev-lang/python-2.6.4» >>/usr/armv4tl-softfloat-linux-gnueabi/etc/portage/package.mask

В этом случае питон будет браться не из основного дерева, а из оверлея,
в оверлее питон пропатчен

ArsenShnurkov
() автор топика
Ответ на: комментарий от Nao

Во время компиляции dev-libs/libxml2-2.7.6
выдается сообщение

libtool: compile: armv4tl-softfloat-linux-gnueabi-gcc -DHAVE_CONFIG_H -I. -I.. -I/usr/include/python2.6 -I../include -I../include -I../python -Os -pipe -fomit-frame-pointer -I/usr/armv4tl-softfloat-linux-gnueabi/usr/include/ -I/usr/armv4tl-softfloat-linux-gnueabi/include/ -pedantic -W -Wformat -Wunused -Wimplicit -Wreturn-type -Wswitch -Wcomment -Wtrigraphs -Wformat -Wchar-subscripts -Wuninitialized -Wparentheses -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -Waggregate-return -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Winline -Wredundant-decls -MT libxml.lo -MD -MP -MF .deps/libxml.Tpo -c libxml.c -fPIC -DPIC -o .libs/libxml.o
In file included from /usr/include/python2.6/Python.h:58,
from libxml.c:14:
/usr/include/python2.6/pyport.h:685:2: error: #error «LONG_BIT definition appears wrong for platform (bad gcc/glibc config?).»

Соответственно:

echo «>=dev-libs/libxml2-2.7.6» >>/usr/armv4tl-softfloat-linux-gnueabi/etc/portage/package.mask

ArsenShnurkov
() автор топика
Ответ на: комментарий от ArsenShnurkov

и вообще, зачем они по умолчанию добавили ~arm ?
nano /usr/armv4tl-softfloat-linux-gnueabi/etc/make.conf
убрать ~arm из строчки
ACCEPT_KEYWORDS=«arm»

ArsenShnurkov
() автор топика
Ответ на: комментарий от Nao

Осталось докомпилировать три пакета:

sys-apps/shadow
sys-devel/gcc either 4.3.4 and 4.4.2
net-misc/openssh

gcc говорит - http://dpaste.com/151668/
sys-apps/shadow-4.1.2.2 говорит - http://dpaste.com/151670/
openssh требует shadow

Кроме того, насколько я понял из туториала
http://gentoo.mindzoo.de/index.cgi/wiki/Cross%20Install
устанавливается только корневая файловая система, ядро и загрузчик используются старые, установленные во внутреннюю flash память на микросхеме.

Не ясно, что при этом происходит с модулями.

ArsenShnurkov
() автор топика
Ответ на: комментарий от ArsenShnurkov

try to build a toolchain based on gcc-4.3.2
that >gcc-4.3.2 fails is a known problem.
details see http://gentoo.mindzoo.de/index.cgi/ticket/116

make sure you have the same version of
binutils, glibc and gcc in toolchain and target

===

(shadow) bug that shadow fails with +cracklib and try with USE=-cracklib as a workaround

ArsenShnurkov
() автор топика
Ответ на: комментарий от Nao

Базовые пакеты скросскомпилировал:
http://pastebin.com/f4670c563

Теперь мне непонятно, куда устанавливать ядро - на SD-карту или в FLASH-RAM самого FreeRunner

ArsenShnurkov
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.