Rating@Mail.ru

Форум по операционной системе GNU/Linux и свободному программному обеспечению


Текущее время: 19 сен 2017, 14:45

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 85 ]  На страницу Пред.  1, 2, 3, 4, 5, 6 ... 9  След.
Автор Сообщение
 Заголовок сообщения: Re: Go
Непрочитанное сообщениеДобавлено: 26 май 2016, 11:12 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10060
Откуда: Харьков
Olej писал(а):
Базовым материалом, на этот раз, будет вот та книжка Кэрнигана, показанная выше.

В книге много интересных и полезных примеров кода (в отличие от обычных для большинства книг примеров бла-бла-бла, высосанных из пальца).
Я буду здесь отмечать (себе на памятку) только те немногие, которые особо полезны на практике.
Таким безусловно является обработка опций командной строки запуска программы, на манер того, что делает POSIX getopt().
Код:
// Echo4 prints its command-line arguments.
package main

import (
        "flag"
        "fmt"
        "strings"
)

var n = flag.Bool("n", false, "omit trailing newline")
var sep = flag.String("s", " ", "separator")

func main() {
        flag.Parse()
        fmt.Print(strings.Join(flag.Args(), *sep))
        if !*n {
                fmt.Println()
        }
}

Код:
[olej@dell bin]$ go build gopl.io/ch2/echo4

Код:
[olej@dell bin]$ ./echo4 a bc def
a bc def
[olej@dell bin]$ ./echo4 -n a bc def
a bc def[olej@dell bin]$
[olej@dell bin]$ ./echo4 a bc def -n
a bc def -n

Код:
[olej@dell bin]$ ./echo4 -s / a/bc/def
a/bc/def
[olej@dell bin]$ ./echo4 -s/ a/bc/def
flag provided but not defined: -s/
Usage of ./echo4:
  -n   omit trailing newline
  -s string
       separator (default " ")
[olej@dell bin]$ ./echo4 -s"/" a/bc/def
flag provided but not defined: -s/
Usage of ./echo4:
  -n   omit trailing newline
  -s string
       separator (default " ")

Это не совсем то по поведению (к сожалению) что getopt(), но очень похоже...
P.S. "не совсем то" имеется в виду, что нельзя в командной строке, например, "пересыпать" опции (ключи) с параметрами ... но в целом это годится для написания консольных приложений, напоминающих поведением утилиты Linux.


Вернуться к началу
 Профиль Отправить личное сообщение  
 
 Заголовок сообщения: Re: Go
Непрочитанное сообщениеДобавлено: 31 май 2016, 08:06 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10060
Откуда: Харьков
Olej писал(а):
Начинаю (в силу определённых обстоятельств) новый виток углубления в Go... и проверки что там сейчас и поменялось за 2 года.

Относительно инструментария (как с этим можно работать):
- в качестве редактора вполне пригоден и достаточен стандартный Geany:
Вложение:
iota_p105.png
iota_p105.png [ 117.73 КБ | Просмотров: 2599 ]

- он понимает цветовую разметку кода Go
- его опция Build (F8) совершенно правильно собирает приложение с помощью Golang
- в нижнем фрейме вам ошибки...
- там же можно запускать и тестировать собранное приложение.
Вложение:
iota_p105-2.png
iota_p105-2.png [ 137.01 КБ | Просмотров: 2599 ]


Всё в одном флаконе... ;-)


Вернуться к началу
 Профиль Отправить личное сообщение  
 
 Заголовок сообщения: Re: Go
Непрочитанное сообщениеДобавлено: 31 май 2016, 08:18 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10060
Откуда: Харьков
Olej писал(а):
Относительно инструментария (как с этим можно работать):

По поводу справочной системы под рукой...
Читаем, например, в книге (стр. 97):
Цитата:
Для работы со строками в особенности важны четыре стандартных пакета: bytes, strings, strconv и unicode.

Справку по всем стандартным пакетам Go получаем тут-же из исходников здесь - Directory src/:
Код:
File         Bytes         Modified
..
Make.dist       553       2016-05-19 18:04:32 +0000 UTC
all.bash       407       2016-05-19 18:04:32 +0000 UTC
all.bat       726       2016-05-19 18:04:32 +0000 UTC
all.rc       385       2016-05-19 18:04:32 +0000 UTC
androidtest.bash       2902       2016-05-19 18:04:34 +0000 UTC
archive/       0       0001-01-01 00:00:00 +0000 UTC
bootstrap.bash       2050       2016-05-19 18:04:34 +0000 UTC
bufio/       0       0001-01-01 00:00:00 +0000 UTC
buildall.bash       1821       2016-05-19 18:04:34 +0000 UTC
builtin/       0       0001-01-01 00:00:00 +0000 UTC
bytes/       0       0001-01-01 00:00:00 +0000 UTC
clean.bash       521       2016-05-19 18:04:32 +0000 UTC
clean.bat       565       2016-05-19 18:04:32 +0000 UTC
clean.rc       380       2016-05-19 18:04:32 +0000 UTC
cmd/       0       0001-01-01 00:00:00 +0000 UTC
compress/       0       0001-01-01 00:00:00 +0000 UTC
container/       0       0001-01-01 00:00:00 +0000 UTC
crypto/       0       0001-01-01 00:00:00 +0000 UTC
database/       0       0001-01-01 00:00:00 +0000 UTC
debug/       0       0001-01-01 00:00:00 +0000 UTC
encoding/       0       0001-01-01 00:00:00 +0000 UTC
errors/       0       0001-01-01 00:00:00 +0000 UTC
expvar/       0       0001-01-01 00:00:00 +0000 UTC
flag/       0       0001-01-01 00:00:00 +0000 UTC
fmt/       0       0001-01-01 00:00:00 +0000 UTC
go/       0       0001-01-01 00:00:00 +0000 UTC
hash/       0       0001-01-01 00:00:00 +0000 UTC
html/       0       0001-01-01 00:00:00 +0000 UTC
image/       0       0001-01-01 00:00:00 +0000 UTC
index/       0       0001-01-01 00:00:00 +0000 UTC
internal/       0       0001-01-01 00:00:00 +0000 UTC
io/       0       0001-01-01 00:00:00 +0000 UTC
iostest.bash       2020       2016-05-19 18:04:32 +0000 UTC
log/       0       0001-01-01 00:00:00 +0000 UTC
make.bash       5667       2016-05-19 18:04:34 +0000 UTC
make.bat       3776       2016-05-19 18:04:34 +0000 UTC
make.rc       2933       2016-05-19 18:04:32 +0000 UTC
math/       0       0001-01-01 00:00:00 +0000 UTC
mime/       0       0001-01-01 00:00:00 +0000 UTC
nacltest.bash       1924       2016-05-19 18:04:34 +0000 UTC
net/       0       0001-01-01 00:00:00 +0000 UTC
os/       0       0001-01-01 00:00:00 +0000 UTC
path/       0       0001-01-01 00:00:00 +0000 UTC
race.bash       853       2016-05-19 18:04:32 +0000 UTC
race.bat       1037       2016-05-19 18:04:32 +0000 UTC
reflect/       0       0001-01-01 00:00:00 +0000 UTC
regexp/       0       0001-01-01 00:00:00 +0000 UTC
run.bash       1283       2016-05-19 18:04:32 +0000 UTC
run.bat       1078       2016-05-19 18:04:32 +0000 UTC
run.rc       380       2016-05-19 18:04:32 +0000 UTC
runtime/       0       0001-01-01 00:00:00 +0000 UTC
sort/       0       0001-01-01 00:00:00 +0000 UTC
strconv/       0       0001-01-01 00:00:00 +0000 UTC
strings/       0       0001-01-01 00:00:00 +0000 UTC
sync/       0       0001-01-01 00:00:00 +0000 UTC
syscall/       0       0001-01-01 00:00:00 +0000 UTC
testing/       0       0001-01-01 00:00:00 +0000 UTC
text/       0       0001-01-01 00:00:00 +0000 UTC
time/       0       0001-01-01 00:00:00 +0000 UTC
unicode/       0       0001-01-01 00:00:00 +0000 UTC
unsafe/       0       0001-01-01 00:00:00 +0000 UTC
vendor/       0       0001-01-01 00:00:00 +0000 UTC

Цитата:
Build version go1.6.2.


Ничего больше и не надо (описаний, разъяснений, ...) - всё просто и понятно.


Вернуться к началу
 Профиль Отправить личное сообщение  
 
 Заголовок сообщения: Re: Go
Непрочитанное сообщениеДобавлено: 31 май 2016, 08:48 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10060
Откуда: Харьков
Olej писал(а):
В книге много интересных и полезных примеров кода

Красивый пример на использование генератора констант iota (стр.104)


Вложения:
iota_p105-3.png
iota_p105-3.png [ 116.28 КБ | Просмотров: 2599 ]
Вернуться к началу
 Профиль Отправить личное сообщение  
 
 Заголовок сообщения: Re: Go
Непрочитанное сообщениеДобавлено: 31 май 2016, 10:55 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10060
Откуда: Харьков
Olej писал(а):
Сразу зафиксируем то, что ни в одной книжке, как правило, вам не расскажут:

1. Показанные выше компиляции собирают приложения со статической сборкой с библиотеками.
Код:
[olej@dell bin]$ ls -l helloworld
-rwxr-xr-x. 1 olej olej 2367440 май 23 20:35 helloworld

[olej@dell bin]$ ldd helloworld
   не является динамическим исполняемым файлом

[olej@dell bin]$ file helloworld
helloworld: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, not stripped

Это хорошо, возможно, для embedded систем/приложений, или Windows.
Но вовсе не хорошо для Linux (см. размер исполнимого файла)

2. При некоторых условиях (опциями команд) сборка может быть динамическая, с использованием shared библиотек операционной системы:
Код:
 
[olej@dell bin]$ ldd fetch
   linux-vdso.so.1 (0x00007ffd1c5e5000)
   libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f5a94e62000)
   libc.so.6 => /lib64/libc.so.6 (0x00007f5a94aa1000)
   /lib64/ld-linux-x86-64.so.2 (0x00005587fc664000)

С этими опциями я разберусь попозже.

3. Всё это относится к основному проекту Golang.
Но в проекте компилятора GCC (который поддерживает и так несколько языков программирования) развивается ветка Go:
Код:
[olej@localhost ~]$ dnf list gcc* | grep go
gcc-go.x86_64                                  5.3.1-6.fc23             updates

[olej@localhost ~]$ dnf info gcc-go
Последняя проверка окончания срока действия метаданных: 20 days, 1:23:24 назад, Sun May  1 15:47:26 2016.
Доступные пакеты
Имя         : gcc-go
Архитектура : x86_64
Эпоха       : 0
Версия      : 5.3.1
Релиз       : 6.fc23
Размер      : 8.9 M
Репозиторий : updates
Краткое опи : Go support
URL         : http://gcc.gnu.org
Лицензия    : GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD
Описание    : The gcc-go package provides support for compiling Go programs
            : with the GNU Compiler Collection.

Где-то встречалось, что это тот же код компиляции Golang, имплементированный в GCC (все проекты - открытые), т.е. разговор в терминах "лучше-хуже", пожалуй, вряд ли уместен.
Пока я не стал устанавливать gcc-go на этот компьютер, чтобы он (по путям и умолчаниям) не смазывал, поначалу, картину с Golang.
На других компьютеров у меня стоит gcc-go (где-то я даже начинал инсталляцию именно с этого - он сам по себе самодостаточный и компилятор Go поставит по зависимостям).
При такой компиляции GCC использует динамическую сборку, и размер исполнимых файлов под Linux может быть в разы меньше.

Самое время доустановить и плагин Go из комплекта проекта GCC:
Код:
[olej@dell GoBook]$ sudo dnf install gcc-go
[sudo] пароль для olej:
Последняя проверка окончания срока действия метаданных: 1:57:41 назад, Tue May 31 08:43:15 2016.
Зависимости разрешены.
=====================================================================================================================================
 Package                          Архитектура                 Версия                              Репозиторий                  Размер
=====================================================================================================================================
Установка:
 gcc-go                           x86_64                      5.3.1-6.fc23                        updates                      8.9 M
 libgo                            x86_64                      5.3.1-6.fc23                        updates                      6.7 M
 libgo-devel                      x86_64                      5.3.1-6.fc23                        updates                      230 k

Результат операции
=====================================================================================================================================
Установка  3 Пакеты

Объем загрузки: 16 M
Объем изменений: 56 M
Продолжить? [д/Н]: y
Загрузка пакетов:
(1/3): libgo-devel-5.3.1-6.fc23.x86_64.rpm                                                           266 kB/s | 230 kB     00:00   
(2/3): libgo-5.3.1-6.fc23.x86_64.rpm                                                                 419 kB/s | 6.7 MB     00:16   
(3/3): gcc-go-5.3.1-6.fc23.x86_64.rpm                                                                451 kB/s | 8.9 MB     00:20   
-------------------------------------------------------------------------------------------------------------------------------------
Общий размер                                                                                         552 kB/s |  16 MB     00:29     
Проверка транзакции
Проверка транзакции успешно завершена.
Идет проверка транзакции
Тест транзакции проведен успешно
Выполнение транзакции
  Установка    : libgo-5.3.1-6.fc23.x86_64                                                                                       1/3
  Установка    : libgo-devel-5.3.1-6.fc23.x86_64                                                                                 2/3
  Установка    : gcc-go-5.3.1-6.fc23.x86_64                                                                                      3/3
  Проверка     : gcc-go-5.3.1-6.fc23.x86_64                                                                                      1/3
  Проверка     : libgo-5.3.1-6.fc23.x86_64                                                                                       2/3
  Проверка     : libgo-devel-5.3.1-6.fc23.x86_64                                                                                 3/3

Установлено:
  gcc-go.x86_64 5.3.1-6.fc23                libgo.x86_64 5.3.1-6.fc23                libgo-devel.x86_64 5.3.1-6.fc23               

Выполнено!


Вернуться к началу
 Профиль Отправить личное сообщение  
 
 Заголовок сообщения: Re: Go
Непрочитанное сообщениеДобавлено: 31 май 2016, 11:01 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10060
Откуда: Харьков
Olej писал(а):
Самое время доустановить и плагин Go из комплекта проекта GCC:

Код:
[olej@dell GoBook]$ which gccgo
/usr/bin/gccgo
[olej@dell GoBook]$ gccgo --version
gccgo (GCC) 5.3.1 20160406 (Red Hat 5.3.1-6)
Copyright (C) 2015 Free Software Foundation, Inc.
Это свободно распространяемое программное обеспечение. Условия копирования
приведены в исходных текстах. Без гарантии каких-либо качеств, включая
коммерческую ценность и применимость для каких-либо целей.

Но такая установка разрушает каким-то образом инсталляцию Golan ... чего не наблюдалось в Mint 17.1
Каким-то образом разрушилось:
Код:
[olej@dell bin]$ go env GOROOT
/usr

Пришлось сделать деинсталляцию:
Код:
[olej@dell tasks]$ sudo dnf remove gcc-go
[sudo] пароль для olej:
Зависимости разрешены.
=====================================================================================================================================
 Package                          Архитектура                 Версия                             Репозиторий                   Размер
=====================================================================================================================================
Удаление:
 gcc-go                           x86_64                      5.3.1-6.fc23                       @updates                       24 M
 libgo                            x86_64                      5.3.1-6.fc23                       @updates                       31 M
 libgo-devel                      x86_64                      5.3.1-6.fc23                       @updates                      1.3 M

Результат операции
=====================================================================================================================================
Удаление  3 Пакеты

Объем изменений: 56 M
Продолжить? [д/Н]: y
Проверка транзакции
Проверка транзакции успешно завершена.
Идет проверка транзакции
Тест транзакции проведен успешно
Выполнение транзакции
  Удаление     : gcc-go-5.3.1-6.fc23.x86_64                                                                                      1/3
  Удаление     : libgo-devel-5.3.1-6.fc23.x86_64                                                                                 2/3
  Удаление     : libgo-5.3.1-6.fc23.x86_64                                                                                       3/3
  Проверка     : libgo-5.3.1-6.fc23.x86_64                                                                                       1/3
  Проверка     : libgo-devel-5.3.1-6.fc23.x86_64                                                                                 2/3
  Проверка     : gcc-go-5.3.1-6.fc23.x86_64                                                                                      3/3

Удалено:
  gcc-go.x86_64 5.3.1-6.fc23                libgo.x86_64 5.3.1-6.fc23                libgo-devel.x86_64 5.3.1-6.fc23               

Выполнено!

После чего восстанавливается:
Код:
[olej@dell tasks]$ go env GOROOT
/usr/lib/golang
[olej@dell tasks]$ go env GOPATH
/home/olej/2016_WORK/GoBook
[olej@dell tasks]$ go build -compiler gc gopl.io/ch1/helloworld
[olej@dell tasks]$ ls -l helloworld
-rwxr-xr-x. 1 olej olej 2367440 май 31 12:38 helloworld
[olej@dell tasks]$ file helloworld
helloworld: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, not stripped
[olej@dell tasks]$ ./helloworld
Hello, 世界

С этим нужно разбираться что там с ним происходит в Fedora 23!


Вернуться к началу
 Профиль Отправить личное сообщение  
 
 Заголовок сообщения: Re: Go
Непрочитанное сообщениеДобавлено: 31 май 2016, 13:10 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10060
Откуда: Харьков
Небольшая GoLang страничка для онлайновой компиляции и изучения работы кода на языке Go:
The Go Playground


Вернуться к началу
 Профиль Отправить личное сообщение  
 
 Заголовок сообщения: Re: Go
Непрочитанное сообщениеДобавлено: 31 май 2016, 15:26 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10060
Откуда: Харьков
Утверждается, что компиляция с Go выполняется намного быстрее, чем в любых других языках (особенно в сравнении с языками C и C++).
Представляется, в связи с этим, возможность использовать программы Go в качестве исполнимых скриптов (сценариев) операционной системы Linux.
Этому посвящено несколько независимых проектов. Меня интересует проект gorun (https://wiki.ubuntu.com/gorun , https://code.launchpad.net/~niemeyer/gorun/trunk).

1. Устанавливаю систему контроля версий Bazaar, используемую разработчиками Ubuntu:
Код:
[olej@dell .ssh]$ sudo dnf install bzr
[sudo] пароль для olej:
Последняя проверка окончания срока действия метаданных: 0:20:12 назад, Tue May 31 14:58:30 2016.
Зависимости разрешены.
======================================================================================================================
 Package                         Архитектура            Версия                           Репозиторий            Размер
======================================================================================================================
Установка:
 bzr                             x86_64                 2.6.0-12.fc23                    fedora                 6.3 M
 libtomcrypt                     x86_64                 1.17-25.fc23                     fedora                 229 k
 libtommath                      x86_64                 0.42.0-6.fc23                    fedora                  39 k
 python-crypto                   x86_64                 2.6.1-7.fc23                     fedora                 468 k
 python-ecdsa                    noarch                 0.11-4.fc23                      fedora                  73 k
 python-paramiko                 noarch                 1.15.2-3.fc23                    fedora                 254 k

Результат операции
======================================================================================================================
Установка  6 Пакетов

Объем загрузки: 7.4 M
Объем изменений: 33 M
Продолжить? [д/Н]: y
Загрузка пакетов:
(1/6): python-paramiko-1.15.2-3.fc23.noarch.rpm                                       256 kB/s | 254 kB     00:00   
(2/6): python-crypto-2.6.1-7.fc23.x86_64.rpm                                          385 kB/s | 468 kB     00:01   
(3/6): python-ecdsa-0.11-4.fc23.noarch.rpm                                            223 kB/s |  73 kB     00:00   
(4/6): libtommath-0.42.0-6.fc23.x86_64.rpm                                            183 kB/s |  39 kB     00:00   
(5/6): libtomcrypt-1.17-25.fc23.x86_64.rpm                                            317 kB/s | 229 kB     00:00   
(6/6): bzr-2.6.0-12.fc23.x86_64.rpm                                                   633 kB/s | 6.3 MB     00:10   
----------------------------------------------------------------------------------------------------------------------
Общий размер                                                                          637 kB/s | 7.4 MB     00:11     
Проверка транзакции
Проверка транзакции успешно завершена.
Идет проверка транзакции
Тест транзакции проведен успешно
Выполнение транзакции
  Установка    : libtommath-0.42.0-6.fc23.x86_64                                                                  1/6
  Установка    : libtomcrypt-1.17-25.fc23.x86_64                                                                  2/6
  Установка    : python-crypto-2.6.1-7.fc23.x86_64                                                                3/6
  Установка    : python-ecdsa-0.11-4.fc23.noarch                                                                  4/6
  Установка    : python-paramiko-1.15.2-3.fc23.noarch                                                             5/6
  Установка    : bzr-2.6.0-12.fc23.x86_64                                                                         6/6
  Проверка     : bzr-2.6.0-12.fc23.x86_64                                                                         1/6
  Проверка     : python-paramiko-1.15.2-3.fc23.noarch                                                             2/6
  Проверка     : python-crypto-2.6.1-7.fc23.x86_64                                                                3/6
  Проверка     : python-ecdsa-0.11-4.fc23.noarch                                                                  4/6
  Проверка     : libtomcrypt-1.17-25.fc23.x86_64                                                                  5/6
  Проверка     : libtommath-0.42.0-6.fc23.x86_64                                                                  6/6

Установлено:
  bzr.x86_64 2.6.0-12.fc23              libtomcrypt.x86_64 1.17-25.fc23     libtommath.x86_64 0.42.0-6.fc23         
  python-crypto.x86_64 2.6.1-7.fc23     python-ecdsa.noarch 0.11-4.fc23     python-paramiko.noarch 1.15.2-3.fc23   

Выполнено!

2. Загружаю сам проект gorun:
Код:
[olej@dell tasks]$ bzr branch lp:gorun
You have not informed bzr of your Launchpad ID, and you must do this to
write to Launchpad or access private data.  See "bzr help launchpad-login".
Ответвлены 19 ревизий.                                                                         

[olej@dell tasks]$ ls -l -R gorun
gorun:
итого 44
-rw-rw-r--. 1 olej olej 35147 май 31 15:24 COPYING
-rw-rw-r--. 1 olej olej  7597 май 31 15:24 gorun.go

3. Сборка
Код:
[olej@dell tasks]$ cd gorun
[olej@dell gorun]$ go build ./gorun.go
[olej@dell gorun]$ ls -l gorun
-rwxr-xr-x. 1 olej olej 2871080 май 31 15:28 gorun
[olej@dell gorun]$ file gorun
gorun: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, not stripped


Вернуться к началу
 Профиль Отправить личное сообщение  
 
 Заголовок сообщения: Re: Go
Непрочитанное сообщениеДобавлено: 31 май 2016, 15:56 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10060
Откуда: Харьков
Код:
[olej@dell gorun]$ sudo cp gorun /usr/local/bin
[sudo] пароль для olej:
[olej@dell tasks]$ which gorun
/usr/local/bin/gorun
[olej@dell tasks]$ touch tiny.go

Тестовая задача:
Код:
[olej@dell tasks]$ cat tiny.go
#!/usr/local/bin/gorun

package main
import ( "fmt" )

func main() {
   fmt.Println( "минимальное приложение" )
}

Код:
[olej@dell tasks]$ chmod a+x tiny.go
[olej@dell tasks]$ time ./tiny.go
go tool: no such tool "6g"
error: failed to run go: exit status 3
real   0m0.013s
user   0m0.010s
sys   0m0.006s

Вот так! :-o - то, что так успешно работало в полтора года назад - развалилось! :cry:
Не может быть вызван компилятор 6g по именам, унаследованным из ОС Plan 9:
Код:
        switch runtime.GOARCH {
        case "386":
                return "8"
        case "amd64":
                return "6"
        case "arm":
                return "5"
        }


Вернуться к началу
 Профиль Отправить личное сообщение  
 
 Заголовок сообщения: Re: Go
Непрочитанное сообщениеДобавлено: 31 май 2016, 16:47 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10060
Откуда: Харьков
Olej писал(а):
2. При некоторых условиях (опциями команд) сборка может быть динамическая, с использованием shared библиотек операционной системы:
С этими опциями я разберусь попозже.

Код:
[olej@dell ~]$ dnf info golang-shared
Последняя проверка окончания срока действия метаданных: 8 days, 17:14:54 назад, Sun May 22 23:18:30 2016.
Доступные пакеты
Имя         : golang-shared
Архитектура : x86_64
Эпоха       : 0
Версия      : 1.5.4
Релиз       : 1.fc23
Размер      : 12 M
Репозиторий : updates
Краткое опи : Golang shared object libraries
URL         : http://golang.org/
Лицензия    : BSD and Public Domain
Описание    : Golang shared object libraries.

Код:
[olej@dell ~]$ sudo dnf install golang-shared
[sudo] пароль для olej:
Последняя проверка окончания срока действия метаданных: 1:35:29 назад, Tue May 31 14:58:30 2016.
Зависимости разрешены.
=====================================================================================================================================
 Package                            Архитектура                 Версия                            Репозиторий                  Размер
=====================================================================================================================================
Установка:
 golang-shared                      x86_64                      1.5.4-1.fc23                      updates                       12 M

Результат операции
=====================================================================================================================================
Установка  1 Пакет

Объем загрузки: 12 M
Объем изменений: 77 M
Продолжить? [д/Н]: y
Загрузка пакетов:
golang-shared-1.5.4-1.fc23.x86_64.rpm                                                                1.2 MB/s |  12 MB     00:10   
-------------------------------------------------------------------------------------------------------------------------------------
Общий размер                                                                                         1.1 MB/s |  12 MB     00:11     
Проверка транзакции
Проверка транзакции успешно завершена.
Идет проверка транзакции
Тест транзакции проведен успешно
Выполнение транзакции
  Установка    : golang-shared-1.5.4-1.fc23.x86_64                                                                               1/1
  Проверка     : golang-shared-1.5.4-1.fc23.x86_64                                                                               1/1

Установлено:
  golang-shared.x86_64 1.5.4-1.fc23                                                                                                 

Выполнено!

Делаем 2 параллельных сборки:
Код:
[olej@dell tasks]$ go build -linkshared ./hello.go
[olej@dell tasks]$ go build -o hellos ./hello.go
[olej@dell tasks]$ ls -l hello*
-rwxr-xr-x. 1 olej olej   15816 май 31 16:38 hello
-rw-rw-r--. 1 olej olej     266 май 31 11:05 hello.go
-rwxr-xr-x. 1 olej olej 2367424 май 31 16:38 hellos
[olej@dell tasks]$ ./hello
Hello, 世界
[olej@dell tasks]$ ./hellos
Hello, 世界
[olej@dell tasks]$ file hello*
hello:    ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=ecbaadbe3483b60da122274f34abadf78d68b236, not stripped
hello.go: C source, UTF-8 Unicode text
hellos:   ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, not stripped

Размеры приложений, собранных из одного исходника, отличаются больше чем в 100 раз:
Код:
[olej@dell tasks]$ ldd hello
   linux-vdso.so.1 (0x00007ffe5fbf4000)
   libstd.so => /usr/lib/golang/pkg/linux_amd64_dynlink/libstd.so (0x00007f8bfbd9b000)
   libc.so.6 => /lib64/libc.so.6 (0x00007f8bfb9bc000)
   libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f8bfb79f000)
   /lib64/ld-linux-x86-64.so.2 (0x000056212c4b6000)
[olej@dell tasks]$ ldd hellos
   не является динамическим исполняемым файлом


Вернуться к началу
 Профиль Отправить личное сообщение  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 85 ]  На страницу Пред.  1, 2, 3, 4, 5, 6 ... 9  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB
[ Time : 0.445s | 21 Queries | GZIP : On ]