ПО, ЭВМ и АСУ из Таможенного Союза

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



aarch64-baikal-linux-gnu

Сообщений 1 страница 5 из 5

1

https://wiki.gentoo.org/wiki/Crossdev
https://wiki.gentoo.org/wiki/Cross_build_environment

Из каких вариантов повыбирать имя (кросс-тулчейна):
aarch64-linux-gnu
aarch64-baikal-linux-gnu
aarch64-edelweiss-linux-gnu
aarch64-tf307-linux-gnu
arm64-linux-gnu
arm64-baikal-linux-gnu
arm64-edelweiss-linux-gnu
arm64-tf307-linux-gnu

USE="-*" crossdev -S aarch64-baikal-linux-gnu

* crossdev version:      20201129
* Host Portage ARCH:     amd64
* Host Portage System:   x86_64-pc-linux-gnu (i686-pc-linux-gnu x86_64-pc-linux-gnu)
* Target Portage ARCH:   arm64
* Target System:         aarch64-baikal-linux-gnu
* Stage:                 4 (C/C++ compiler)
* USE=multilib:          no
* Target ABIs:           arm64

* binutils:              binutils-[stable]
* gcc:                   gcc-[stable]
* headers:               linux-headers-[stable]
* libc:                  glibc-[stable]

* CROSSDEV_OVERLAY:      /var/db/repos/crossdev
* PORT_LOGDIR:           /var/log/portage
* PORTAGE_CONFIGROOT:    /
* Portage flags:         
                                                                                                                                                 
* leaving metadata/layout.conf alone in /var/db/repos/crossdev
                                                                                                                                                 
* Log: /var/log/portage/cross-aarch64-baikal-linux-gnu-binutils.log
* Emerging cross-binutils ...                                                                                                             [ ok ]
* Log: /var/log/portage/cross-aarch64-baikal-linux-gnu-gcc-stage1.log
* Emerging cross-gcc-stage1 ...                                                                                                           [ ok ]
* Log: /var/log/portage/cross-aarch64-baikal-linux-gnu-linux-headers.log
* Emerging cross-linux-headers ...                                                                                                        [ ok ]
* Log: /var/log/portage/cross-aarch64-baikal-linux-gnu-glibc.log
* Emerging cross-glibc ...                                                                                                                [ ok ]
* Log: /var/log/portage/cross-aarch64-baikal-linux-gnu-gcc-stage2.log
* Emerging cross-gcc-stage2 ...                                                                                                           [ ok ]

Вариант arm64-baikal-linux-gnu не работает, неправильно выбирает строку
* Target Portage ARCH:   arm
вместо arm64

Вот эта путаница с ARCH и его значением - aarch64 или arm64 (см. ниже в профиле portage), вызывает у меня непонятки.

Отредактировано Лис (2021-01-30 15:55:31)

0

2

/usr/aarch64-baikal-linux-gnu # file etc/portage/make.profile

etc/portage/make.profile: symbolic link to /var/db/repos/gentoo/profiles/embedded

# cat /var/db/repos/gentoo/profiles/arch.list

alpha
amd64
arm
arm64
hppa
ia64
m68k
mips
ppc
ppc64
riscv
s390
sparc
x86

# Prefix keywords
amd64-linux
arm-linux
arm64-linux
ppc64-linux
x86-linux
arm64-macos
ppc-macos
x64-macos
sparc-solaris
sparc64-solaris
x64-solaris
x86-solaris
x64-winnt
x86-winnt
x64-cygwin

/usr/aarch64-baikal-linux-gnu # ${EDITOR} etc/portage/make.conf

# Note: profile variables are set/overridden in profile/ files:
# etc/portage/profile/use.force (overrides kernel_* USE variables)
# etc/portage/profile/make.defaults (overrides ARCH, KERNEL, ELIBC variables)

ARCH=arm64
FEATURES="-collision-protect sandbox buildpkg noman noinfo nodoc"

CHOST=aarch64-baikal-linux-gnu
CBUILD=x86_64-pc-linux-gnu

HOSTCC=${CBUILD}-gcc

ROOT=/usr/${CHOST}/

ACCEPT_KEYWORDS="${ARCH} ~${ARCH}"

USE="${ARCH} -pam"

CFLAGS="-O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"

# Be sure we dont overwrite pkgs from another repo..
PKGDIR=${ROOT}packages/
PORTAGE_TMPDIR=${ROOT}tmp/

PKG_CONFIG_PATH="${ROOT}usr/lib/pkgconfig/"
#PORTDIR_OVERLAY="/usr/portage/local/"

https://devmanual.gentoo.org/general-co … endencies/
CBUILD = The system on which the build is performed. Dependencies that apply to the CBUILD system can be executed during build time. When cross-compiling, they are not installed into the system being built.

Отредактировано Лис (2021-01-30 15:42:38)

0

3

# aarch64-baikal-linux-gnu-emerge -av grub

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild  N     ] sys-libs/ncurses-6.2-r1:0/6::gentoo to /usr/aarch64-baikal-linux-gnu/ USE="cxx minimal -ada -debug -doc -gpm -profile -split-usr -static-libs -test -threads -tinfo -trace -unicode" 0 KiB
[ebuild  N     ] app-arch/xz-utils-5.2.5::gentoo to /usr/aarch64-baikal-linux-gnu/ USE="extra-filters threads -nls -split-usr -static-libs" 0 KiB
[ebuild  N     ] sys-boot/grub-2.05_alpha20200310-r1:2/2.05_alpha20200310-r1::gentoo to /usr/aarch64-baikal-linux-gnu/ USE="fonts themes -device-mapper -doc -efiemu -libzfs -mount -nls -sdl -test -truetype" GRUB_PLATFORMS="-coreboot -efi-32 -efi-64 -emu -ieee1275 -loongson -multiboot -pc -qemu -qemu-mips -uboot -xen -xen-32 -xen-pvh" 6516 KiB

Total: 3 packages (3 new), Size of downloads: 6516 KiB

Would you like to merge these packages? [Yes/No]
...

Код:
# less /usr/aarch64-baikal-linux-gnu/tmp/portage/sys-libs/ncurses-6.2-r1/work/ncurses-6.2-.default/ncurses/config.log
...
/usr/libexec/gcc/aarch64-baikal-linux-gnu/ld: cannot find crt1.o: No such file or directory
/usr/libexec/gcc/aarch64-baikal-linux-gnu/ld: cannot find crti.o: No such file or directory
collect2: error: ld returned 1 exit status

...
checking for C compiler default output... configure: error: C compiler cannot create executables

/usr/aarch64-baikal-linux-gnu # find . -iname "crt1.o"
./usr/lib64/crt1.o
/usr/aarch64-baikal-linux-gnu # find . -iname "crti.o"
./usr/lib64/crti.o

[html]
<a href="https://stackoverflow.com/questions/3299511/missing-crt1-and-crti-when-crosscompiling">https://stackoverflow.com/questions/3299511/missing-crt1-and-crti-when-crosscompiling</a>
[/html]

# aarch64-baikal-linux-gnu-gcc -print-search-dirs

install: /usr/lib/gcc/aarch64-baikal-linux-gnu/9.3.0/
programs: =/usr/libexec/gcc/aarch64-baikal-linux-gnu/9.3.0/:/usr/libexec/gcc/aarch64-baikal-linux-gnu/9.3.0/:/usr/libexec/gcc/aarch64-baikal-linux-gnu/:/usr/lib/gcc/aarch64-baikal-linux-gnu/9.3.0/:/usr/lib/gcc/aarch64-baikal-linux-gnu/:/usr/lib/gcc/aarch64-baikal-linux-gnu/9.3.0/../../../../aarch64-baikal-linux-gnu/bin/aarch64-baikal-linux-gnu/9.3.0/:/usr/lib/gcc/aarch64-baikal-linux-gnu/9.3.0/../../../../aarch64-baikal-linux-gnu/bin/
libraries: =/usr/lib/gcc/aarch64-baikal-linux-gnu/9.3.0/:/usr/lib/gcc/aarch64-baikal-linux-gnu/9.3.0/../../../../aarch64-baikal-linux-gnu/lib/aarch64-baikal-linux-gnu/9.3.0/:/usr/lib/gcc/aarch64-baikal-linux-gnu/9.3.0/../../../../aarch64-baikal-linux-gnu/lib/../lib64/:/usr/lib/gcc/aarch64-baikal-linux-gnu/9.3.0/../../../../aarch64-baikal-linux-gnu/lib/

Лежат библиотеки по пути
/usr/aarch64-baikal-linux-gnu/usr/lib64/
а ищутся по пути
/usr/aarch64-baikal-linux-gnu/lib64/

там ещё третья библиотека = crtn.o

ln -s /usr/aarch64-baikal-linux-gnu/usr/lib64/crt1.o /usr/aarch64-baikal-linux-gnu/lib64/crt1.o
ln -s /usr/aarch64-baikal-linux-gnu/usr/lib64/crti.o /usr/aarch64-baikal-linux-gnu/lib64/crti.o
ln -s /usr/aarch64-baikal-linux-gnu/usr/lib64/crtn.o /usr/aarch64-baikal-linux-gnu/lib64/crtn.o

Отредактировано Лис (2021-01-30 16:56:37)

0

4

/usr/aarch64-baikal-linux-gnu/usr/include/bits/stdlib.h: In function 'wctomb':
/usr/aarch64-baikal-linux-gnu/usr/include/bits/stdlib.h:91:3: error: #error "Assumed value of MB_LEN_MAX wrong"
   91 | # error "Assumed value of MB_LEN_MAX wrong"
      |   ^~~~~

[html]<a href="https://stackoverflow.com/questions/50357803/compiler-error-assumed-value-of-mb-len-max-wrong">https://stackoverflow.com/questions/50357803/compiler-error-assumed-value-of-mb-len-max-wrong</a>[/html]
«it serves as a safeguard against mixing incompatible header files.
...
You need to include limits.h from the same libc»
[html]
<a href="https://stackoverflow.com/questions/58199020/locally-built-gcc-cross-compiler-reports-mb-len-max-wrong-with-d-fortify-source">https://stackoverflow.com/questions/58199020/locally-built-gcc-cross-compiler-reports-mb-len-max-wrong-with-d-fortify-source</a>[/html]

«By default the limits.h file is not properly configured, so you need to patch it.»
«add a #include_next <limits.h> to the bottom which eventually picks up the right header»

https://forums.gentoo.org/viewtopic-t-1 … -next.html
https://github.com/remacs/remacs/issues/788
«It's especially badly-behaved on Gentoo since Gentoo uses its own directory for 64-bit libs.»

# find / -iname "limitx.h"

/usr/lib/gcc/aarch64-baikal-linux-gnu/9.3.0/plugin/include/limitx.h

cd /usr/lib/gcc/aarch64-baikal-linux-gnu/9.3.0/plugin/include
cat limitx.h glimits.h limity.h >/usr/lib/gcc/aarch64-baikal-linux-gnu/9.3.0/include-fixed/limits.h

Как же мне не хочется на всё это тратить своё время...

Отредактировано Лис (2021-01-30 17:19:49)

0

5

checking for BUILD_FREETYPE... no
configure: error: themes were explicitly requested but requirements are not satisfied (No build-time grub-mkfont)

USE="-themes" aarch64-baikal-linux-gnu-emerge -v grub

Код:
>>> sys-boot/grub-2.05_alpha20200310-r1 merged.

Так, хорошо. Теперь надо собрать образ для загрузки с этим грубом вместо того, который внутри Альт-линукса.
Это позволит начать заниматься сборкой и тестированием ядра, а там уже и до web недалеко будет.

Отредактировано Лис (2021-01-30 17:32:38)

0