[О блоге]
[наверх]
[пред]
[2023-07-24 13:38:38+03:00]
[c8f81c2e0b02e5593fb762b67929027ab49b3a65]
Темы: [bsd][go][tip]
Сборка Go на FreeBSD 13+
С момента обновления FreeBSD, появилась проблема: go1.4 не собирается
под ней:
[...]
cmd/6c
/tmp/go/src/cmd/6c/../cc/pswt.c:36:2: error: use of undeclared identifier 'C1'
/tmp/go/src/cmd/6c/../cc/pgen.c:35:14: error: unknown type name 'Type'
[...]
Решить проблему не смог с ходу. Первый раз когда это возникло:
пересобрал под виртуальной машиной С FreeBSD 12.
Сегодня снова посмотрел на эту проблему. В общем пока выходит так:
* разворачиваю chroot FreeBSD 12:
zstd -d < FreeBSD-12.4-RELEASE-amd64-dvd1.iso.zst > fbsd12.iso
mdconfig -a fbsd12.iso
mount -t cd9660 /dev/md0 /cdrom
mkdir /tmp/fbsd12-chroot
tar xfC /cdrom/usr/freebsd-dist/base.txz /tmp/fbsd12-chroot
* сую туда Go, делаю debash (утилита из
http://www.gostls13.cypherpunks.ru/, которая убирает зависимость от
мерзкого bash, которого нет из коробки в нормальных ОС), пытаюсь собрать:
tar xfC go1.4.3.src.tar.gz /tmp/fbsd12-chroot/root
cd /tmp/fbsd12-chroot/root/go
debash
chroot /tmp/fbsd12-chroot /bin/sh
cd go/src
export CGO_ENABLED=0
./make.bash
получаю:
[...]
cmd/go
runtime: address space conflict: map(0xc208000000) = 0xc2081bf000
fatal error: runtime: address space conflict
* выключаю ASLR, который по умолчанию в FreeBSD теперь включён:
sysctl kern.elf64.aslr.enable=0
теперь сборка не падает, а просто на cmd/go зависает, не делая ничего
на CPU. Но, ведь всякие "6c" программы же уже собраны, которые падали
на FreeBSD 13
* уже вне chroot, под FreeBSD 13, продолжаю сборку без очистки:
./make.bash --no-clean
* после этого можно собрать уже Go 1.17, но, с ним тоже будут проблемы с
ASLR. Зато после него, 1.20 уже собирается без проблем
[оставить комментарий]