Команда IT специалистов выполнит подготовку инфраструктуры для вашего бизнеса.
Внедрение самых передовых решений и технологий.
Поддержка и сопровождение ваших сервисов.
Выполнение работ под "ключ", от покупки сервера, до настройки автоматизации процессов. 8(977)608-78-62 adm@nixm.ru
Внедрение самых передовых решений и технологий.
Поддержка и сопровождение ваших сервисов.
Выполнение работ под "ключ", от покупки сервера, до настройки автоматизации процессов. 8(977)608-78-62 adm@nixm.ru
Инструменты Go
Инструменты Go
Известно, что существуют 2 линии инструментария программирования на языке Go: а). базовый прект GoLang (который инициирован Google) и б). проект по включению языка Go в число поддерживаемых компилятором GCC ... более интегрированный со средой Linux.
Интересны любые мнения от том, что когда и для чего лучше ... и другое...
Но!
Конкретная проблема:
- при установке в Fedora 23 GoLang 1.5 (всё из стандартных репозитариев) всё ОК
- при последующей установке Go для GCC всё тоже ОК ... но при этом нарушается работа GoLang
- если удалить gccgo (dnf remove ...) - работа golang восстанавливается
Что это?
В нескольких предыдущих версиях Go и дистрибутивах Linux такого не наблюдалось.
И можно было использовать компиляторы gc и gccgo параллельно.
P.S. Как я гляжу, понимающие в программировании на этот форум заглядывают редко, но ... чем чёрт не шутит?
Интересны любые мнения от том, что когда и для чего лучше ... и другое...
Но!
Конкретная проблема:
- при установке в Fedora 23 GoLang 1.5 (всё из стандартных репозитариев) всё ОК
- при последующей установке Go для GCC всё тоже ОК ... но при этом нарушается работа GoLang
Код: Выделить всё
[olej@dell tasks]$ go build -compiler gc hello.go
hello.go:10:8: cannot find package "fmt" in any of:
/usr/src/fmt (from $GOROOT)
/home/olej/2016_WORK/GoBook/src/fmt (from $GOPATH)
package runtime: cannot find package "runtime" in any of:
/usr/src/runtime (from $GOROOT)
/home/olej/2016_WORK/GoBook/src/runtime (from $GOPATH)
Что это?
В нескольких предыдущих версиях Go и дистрибутивах Linux такого не наблюдалось.
И можно было использовать компиляторы gc и gccgo параллельно.
P.S. Как я гляжу, понимающие в программировании на этот форум заглядывают редко, но ... чем чёрт не шутит?
Re: Инструменты Go
Как показывает изучение, это связано с переустановкой (неправильной) переменных окружения Go (не путать с переменными окружения Linux!).Olej писал(а): - если удалить gccgo (dnf remove ...) - работа golang восстанавливается
При установке (работе) пакета golang:
Код: Выделить всё
[olej@dell gorun]$ go env
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/olej/2016_WORK/GoBook"
GORACE=""
GOROOT="/usr/lib/golang"
GOTOOLDIR="/usr/lib/golang/pkg/tool/linux_amd64"
GO15VENDOREXPERIMENT=""
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0"
CXX="g++"
CGO_ENABLED="1"
Код: Выделить всё
[olej@dell gorun]$ go env
GOARCH="amd64"
GOBIN=""
GOCHAR="6"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/olej/2016_WORK/GoBook"
GORACE=""
GOROOT="/usr"
GOTOOLDIR="/usr/libexec/gcc/x86_64-redhat-linux/5.3.1"
CC="/usr/bin/gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0"
CXX="/usr/bin/g++"
CGO_ENABLED="1"
После удаления gcc-go - работа gc восстанавливается:
Код: Выделить всё
sudo dnf remove gcc-go
...
Как можно поменять значения отдельных переменных?
Re: Инструменты Go
Как оказалось, проблема решилась, и связана она не с изменением в идеологии разработки Go (что было бы крайне неприятно), а с багом сборки ... то ли пакетов Fedora, то ли make install пакета go-lang:Olej писал(а): После удаления gcc-go - работа gc восстанавливается:Код: Выделить всё
sudo dnf remove gcc-go ...
- gcc-go при установке, если ссылка /etc/alternatives/go уже установлена в /usr/lib/golang/bin/go (т.е. golang уже установлен) не должен её переписывать, устанавливать в /usr/bin/go.gcc
- ... должен создавать ссылку только если её там нет
- ... а он это делает тупо в любом случае
- а golang при установке (после gcc-go) ссылку не переписывает
- ну и то же самое с ссылкой /etc/alternatives/gofmt
Теперь это легко поправить (пока не поправят в пакетной системе), делаем (я показываю это на 32-бит Fedora 23 - пути!):
Код: Выделить всё
[root@localhost alternatives]# cd /etc/alternatives
[root@localhost alternatives]# mv go go.gcc
[root@localhost alternatives]# mv gofmt gofmt.gcc
[root@localhost alternatives]# ln -s /usr/lib/golang/bin/go go
[root@localhost alternatives]# ln -s /usr/lib/golang/bin/gofmt gofmt
Код: Выделить всё
[olej@localhost GO]$ go build -compiler gc -o tiny.gc tiny.go
[olej@localhost GO]$ go build -compiler gccgo -o tiny.gcc tiny.go
# command-line-arguments
ar: `u' modifier ignored since `D' is the default (see `U')
[olej@localhost GO]$ ls -l tiny.*
-rwxr-xr-x. 1 olej olej 1905168 Jun 2 12:54 tiny.gc
-rwxr-xr-x. 1 olej olej 25528 Jun 2 12:55 tiny.gcc
-rw-r--r--. 1 olej olej 111 Jun 1 14:23 tiny.go
Код: Выделить всё
[olej@localhost GO]$ file tiny.*
tiny.gc: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, not stripped
tiny.gcc: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=ceea47622da1118f6a98e3febfc687fc80a0d9b2, not stripped
tiny.go: C source, UTF-8 Unicode text
[olej@localhost GO]$ ./tiny.gc
минимальное приложение
[olej@localhost GO]$ ./tiny.gcc
минимальное приложение
Re: Инструменты Go
Этот баг отмечен для Fedora 22 : Red Hat Bugzilla – Bug 1192716.
(на случай если кто столкнётся)
(на случай если кто столкнётся)
Re: Инструменты Go
Проблема решается легко командой alternatives.Olej писал(а):Этот баг отмечен для Fedora 22 : Red Hat Bugzilla – Bug 1192716.
(на случай если кто столкнётся)
См. сюда: http://rus-linux.net/forum/viewtopic.ph ... 650#p14647
Re: Инструменты Go
Подведены итоги 2016-го года:
TIOBE Index for January 2017
TIOBE Index for January 2017
TIOBE награждает язык программирования, который приобрел наибольшую популярность за год (по динамике). Практически без конкуренции Go завоевал награду на 2016 год. Язык от Google вырос за один год на 2.16%. Идущие следом Dart (+0.95%) и Perl (+0.91%) следуют на значительном расстоянии. Основными факторами успеха Go являются его легкость изучения и прагматический характер. Речь идет не о теоретических понятиях, таких как виртуальное наследование или монады, а про практический опыт. Кроме этого Go имеет встроенную поддержку параллельного программирования. Все больше и больше клиентов компании TIOBE адаптируют Go к промышленным условиям. Что является очень хорошим показателем.January Headline: Google's Go is TIOBE's programming language of 2016
TIOBE rewards the programming language that has gained the most popularity in a year with the programming language of the year award. Without hardly any competition Go has won the award for 2016. Google's Go language won 2.16% in one year. Runner ups Dart (+0.95%) and Perl (+0.91%) follow at a considerable distance. The main drivers behind Go's success are its ease of learning and pragmatic nature. It is not about theoretical concepts such as virtual inheritance and monads but about hands-on experience. Apart from that Go has built-in support for concurrency programming. More and more customers of our company TIOBE are adopting Go in an industrial setting. That is a good indicator.
Re: Инструменты Go
Тоже заметила этот баг когда изучала программы на асемблере. Компилятор на мой взгляд от гугла работает прекрасно, но
вот приспичило мне для большего понимания программы останавливаться при компиляции на промежуточном ассемблерном файле.
Для этого и установила gcc-go исключительно для этих целей. Долго не могла понять потом кучу ошибок которые выдавал родной
компилятор, тогда гугления не помогли и я методом тыка все таки установила что причина в банальной несовместимости двух
компиляторов, но помучиться пришлось долго. Кстати собирать программы черз gcc-go лучше с линковщиком gold который задается
через параметр к компилятору.
вот приспичило мне для большего понимания программы останавливаться при компиляции на промежуточном ассемблерном файле.
Для этого и установила gcc-go исключительно для этих целей. Долго не могла понять потом кучу ошибок которые выдавал родной
компилятор, тогда гугления не помогли и я методом тыка все таки установила что причина в банальной несовместимости двух
компиляторов, но помучиться пришлось долго. Кстати собирать программы черз gcc-go лучше с линковщиком gold который задается
через параметр к компилятору.
"I invented the term Object-Oriented and I can tell you I did not have C++ in mind." - Alan Kay
Re: Инструменты Go
Совсем недавно обнаружила еще вот такую штуковину, но сама не пробовала. На будущее пригодится
https://github.com/go-llvm/llgo
https://github.com/go-llvm/llgo
"I invented the term Object-Oriented and I can tell you I did not have C++ in mind." - Alan Kay
Re: Инструменты Go
Это ещё одна любительская ветка LLVM-проекта... довольно давно.nezabudka писал(а):Совсем недавно обнаружила еще вот такую штуковину, но сама не пробовала. На будущее пригодится
https://github.com/go-llvm/llgo
Вряд ли они могут родить что-нибудь существенное сверх 2-х существующих линий развития Go: Golang & GCC.