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

Кросс-компиляция: "пользователь: текущий не реализован на 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

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


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


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

4b9b3361

Ответ 1

Это связано с Проблема 6376: user.Current panic в darwin-amd64 при перекрестном объединении из linux-amd64:

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

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

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

Статус: WorkingAsIntended