Summary: | Собрать Go | ||
---|---|---|---|
Product: | Sisyphus | Reporter: | Alexey Gladkov <legion> |
Component: | gcc4.7-go | Assignee: | Sergey Bolshakov <sbolshakov> |
Status: | CLOSED FIXED | QA Contact: | qa-sisyphus |
Severity: | enhancement | ||
Priority: | P3 | CC: | crux, glebfm, real.altlinux.org, sbolshakov |
Version: | unstable | ||
Hardware: | all | ||
OS: | Linux |
Description
Alexey Gladkov
2012-08-21 01:58:16 MSK
зачем бы ? Он достаточно давно существует и некоторые люди начали его использовать. И мне либо самостоятельно заморачиваться сборкой: https://code.google.com/p/go/, либо gccgo. Если его сборка слишком геморная в gcc, то я буду пробовать собрать их. Хотя в fedora его в gcc собирают. в #78023 собран. нельзя ли проверить ? $ cat z.go package main func main() { print("Hello!\n"); } $ gccgo z.go /usr/bin/ld: cannot find -lgobegin collect2: ld returned 1 exit status Не работает. Нашёл на http://golang.org/doc/install/gccgo, что нужна поддержка в binutils. Забыл сказать, что объектник нормально компилится, спасибо: $ gccgo -c z.go && echo OK OK $ file z.o z.o: ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), not stripped в таком виде нужен libgo4.6-devel-statiс иначе gccgo -shared ... gold у нас есть, в виде ld.gold, на него можно переключиться альтернативой собственно, хорошо бы понять, выкладывать это в сизиф или лучше не стоит :] (В ответ на комментарий №8) > собственно, хорошо бы понять, выкладывать это в сизиф или лучше не стоит :] Чего-то пока не работает: $ readlink -ev /usr/bin/ld /usr/bin/ld.gold $ gccgo z.go /usr/bin/ld: error: cannot find -lgobegin ../sysdeps/x86_64/elf/start.S:109: error: undefined reference to 'main' collect2: ld returned 1 exit status При этом я уверен, что программа должна работать т.к. вот их статически собранная версия: $ ./go run /tmp/z.go Hello! после установки devel-static у меня работает, безо всякого gold (В ответ на комментарий №10) > после установки devel-static у меня работает, безо всякого gold Так работает. Осталось понять почему не работает только с libgo4.6-devel. Если так и должно быть, то наверно стоит перенести эти *.a в devel пакет... иначе как-то странно, что нормально собирается только с static. существование glibc-devel-static тебя не удивляет ? (В ответ на комментарий №12) > существование glibc-devel-static тебя не удивляет ? Не удивляет. Меня бы удивила необходимость этого пакета для сборки абсолютно всех пакетов (статических и нет). Тогда возникает вопрос, зачем нужен -devel, если его всё равно не достаточно. (In reply to comment #3) > в #78023 собран. нельзя ли проверить ? Пакет libgo4.6 надо переименовать в libgo0, по аналогии с libgcc1, libgcj_bc1, libgfortran3, libgomp1, libmudflap0, libobjc3, libquadmath0, libstdc++6. (In reply to comment #10) > после установки devel-static у меня работает, безо всякого gold По аналогии с fortran, где $ rpmquery -lp gcc4.6-fortran-4.6.3-alt4.x86_64.rpm |grep '\.a$' /usr/lib64/gcc/x86_64-alt-linux/4.6.3/libgfortranbegin.a $ rpmquery -lp libgfortran4.6-devel-static-4.6.3-alt4.x86_64.rpm |grep '\.a$' /usr/lib64/gcc/x86_64-alt-linux/4.6.3/libgfortran.a в случае с go, скорее всего, лучше применить такую же раскладку: libgobegin.a переложить в gcc4.6-go, а libgo.a оставить в -devel-static. (В ответ на комментарий №15) > По аналогии с fortran, где > $ rpmquery -lp gcc4.6-fortran-4.6.3-alt4.x86_64.rpm |grep '\.a$' > /usr/lib64/gcc/x86_64-alt-linux/4.6.3/libgfortranbegin.a > $ rpmquery -lp libgfortran4.6-devel-static-4.6.3-alt4.x86_64.rpm |grep '\.a$' > /usr/lib64/gcc/x86_64-alt-linux/4.6.3/libgfortran.a > > в случае с go, скорее всего, лучше применить такую же раскладку: > libgobegin.a переложить в gcc4.6-go, а libgo.a оставить в -devel-static. Было бы здорово. gcc4.6-4.6.3-alt5 -> sisyphus: * Mon Aug 20 2012 Sergey Bolshakov <sbolshakov@altlinux> 4.6.3-alt5 - Go language support packaged (closes: #27654) * Mon Aug 27 2012 Dmitry V. Levin <ldv@altlinux> 4.6.3-alt7 - Backported upstream changes to fix build with glibc-2.16. - Disabled go backend for a while because it doesn't build with glibc-2.16. А можно всё-таки его вернуть ? в 4.6 врядли, в 4.7 попытаемся (скоро :) А нативный golang никто не пытался собрать? (В ответ на комментарий №21) > А нативный golang никто не пытался собрать? Я постараюсь собрать. Теперь у меня нет альтернатив. (В ответ на комментарий №22) > (В ответ на комментарий №21) > > А нативный golang никто не пытался собрать? > > Я постараюсь собрать. Теперь у меня нет альтернатив. Вчера я пытался собрать. Наткнулся на определённые проблемы со сборкой: бинарники не проходят проверку verify-elf. Хоть утилиты запускаются и работают, но, например, $ LD_BIND_NOW=1 /usr/bin/go /usr/bin/go: error while loading shared libraries: unexpected reloc type 0x00050002 Пытаюсь понять как это победить. git://git.altlinux.org/people/crux/packages/go.git Ого! Я не ожидал, что go кому-нибудь ещё нужен и интересен. Hopefully fixed in gcc4.7-go |