Кросс-компиляция: "пользователь: текущий не реализован на 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 отлично работает.
Ответы
Ответ 1
Это связано с Проблема 6376: user.Current panic в darwin-amd64 при перекрестном объединении из linux-amd64:
os/user полагается на cgo, а cgo отключен для кросс-компиляции, таким образом, это ожидается.
если вы используете os/user, вы должны компилировать изначально на OS X.
даже если мы разрешаем поддержку кросс-компиляции cgo, я сомневаюсь, что у всех есть рабочая OS X перекрестная toolchain на их машине linux.
Статус: WorkingAsIntended