Кросс-компиляция: пользователь: текущий не реализован на linux/amd64

Я компилирую следующую программу Go на машине с linux/amd64:

package main

import (
    "fmt"
    "os/user"
)

func main() {
    fmt.Println(user.Current())
}

Это прекрасно работает. Но когда я компилирую его из окна Mac, я получаю следующую ошибку, когда запускаю эту программу на своем компьютере с Linux:

user: Current not implemented on linux/amd64

Как я могу кросс-компилировать и использовать функцию Current в пакете os/user?


Изменить 1: я должен добавить, что это инструкции, которые я использовал для настройки кросс-компиляции на моем компьютере Mac: https://code.google.com/p/go-wiki/wiki/WindowsCrossCompiling


Редактировать 2: кросс-компиляция для windows/386 работает нормально.


person topskip    schedule 16.12.2013    source источник
comment
Какую версию Go вы используете? Какой линукс?   -  person Volker    schedule 16.12.2013
comment
@Volker Я использую go version go1.2 darwin/amd64 и пытаюсь запустить его на Ubuntu 12.04 LTS (Linux xxx 3.2.0-24-generic #39-Ubuntu SMP Mon May 21 16:52:17 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux)   -  person topskip    schedule 16.12.2013
comment
у меня та же проблема, у меня Linux Fedora 20, golang из RPM, go version go1.2.2 linux/amd64 и у меня такая же проблема? компилирую на линукс для линукса. Как я могу избежать этой проблемы?   -  person vodolaz095    schedule 24.08.2014


Ответы (1)


Это связано с ошибкой 6376: user.Current panic в darwin-amd64 при кросс-компиляции. из Linux-AMD64:

os/user полагается на cgo, а cgo отключен для кросс-компиляции, так что это ожидаемо.

если вы используете os/user, вы должны скомпилировать изначально на OS X.

даже если мы включим поддержку кросс-компиляции cgo, я сомневаюсь, что у всех есть работающая кросс-инструментальная цепочка OS X на их Linux-машинах.

Статус: Работает как задумано

person Intermernet    schedule 16.12.2013
comment
Жаль, что я должен принять ваш ответ ;-) Большое спасибо. - person topskip; 16.12.2013
comment
Насколько реалистично то, что Go можно назвать кросс-компиляцией? - person Julie in Austin; 23.03.2018