2015-01-17 3 views
2

Я использую 64-разрядную версию Linux, и я пытаюсь настроить Go для кросс-компиляции (для Windows, в частности). Для этого here есть замечательный путеводитель. Но когда я пытаюсь запустить вторую команду ниже:Настройка ошибок Go для кросс-компиляции

cd /usr/lib/go/src 
sudo GOOS=windows GOARCH=386 CGO_ENABLED=0 ./make.bash --no-clean 

я получаю ошибки при попытке построить cmd пакет. Он говорит use of internal package not allowed. Это ошибка в главном исходном коде Go? Я вложу полный список ошибок.

# Building packages and commands for host, linux/amd64. 
package cmd/cmd/pprof 
    imports cmd/pprof/internal/driver: use of internal package not allowed 
package cmd/cmd/pprof 
    imports cmd/pprof/internal/fetch: use of internal package not allowed 
package cmd/cmd/pprof 
    imports cmd/pprof/internal/symbolizer: use of internal package not allowed 
package cmd/cmd/pprof 
    imports cmd/pprof/internal/symbolz: use of internal package not allowed 
package cmd/cmd/pprof/internal/commands 
    imports cmd/pprof/internal/report: use of internal package not allowed 
package cmd/cmd/pprof/internal/commands 
    imports cmd/pprof/internal/svg: use of internal package not allowed 
package cmd/cmd/pprof/internal/commands 
    imports cmd/pprof/internal/tempfile: use of internal package not allowed 
package cmd/cmd/pprof/internal/driver 
    imports cmd/pprof/internal/commands: use of internal package not allowed 
package cmd/cmd/pprof/internal/driver 
    imports cmd/pprof/internal/report: use of internal package not allowed 
package cmd/cmd/pprof/internal/driver 
    imports cmd/pprof/internal/tempfile: use of internal package not allowed 
package cmd/cmd/pprof/internal/fetch 
    imports cmd/pprof/internal/plugin: use of internal package not allowed 
package cmd/cmd/pprof/internal/fetch 
    imports cmd/pprof/internal/profile: use of internal package not allowed 
package cmd/cmd/pprof/internal/plugin 
    imports cmd/pprof/internal/profile: use of internal package not allowed 
package cmd/cmd/pprof/internal/report 
    imports cmd/pprof/internal/plugin: use of internal package not allowed 
package cmd/cmd/pprof/internal/report 
    imports cmd/pprof/internal/profile: use of internal package not allowed 
package cmd/cmd/pprof/internal/symbolizer 
    imports cmd/pprof/internal/plugin: use of internal package not allowed 
package cmd/cmd/pprof/internal/symbolizer 
    imports cmd/pprof/internal/profile: use of internal package not allowed 
package cmd/cmd/pprof/internal/symbolz 
    imports cmd/pprof/internal/profile: use of internal package not allowed 

Я не могу найти ничего подобного в Google, так что, вероятно, это означает, что я делаю что-то неправильно. Кстати, я использую Arch Linux, и я установил Go с pacman, а не из источника.

ответ

2

Эта ошибка происходит из cmd/go/pkg.go#L358, и посмотреть на вид вина шоу это было введено commit 1338f32 для идти 1,4

Поэтому руководство может работать только с 1,3- идти, не идти 1.4, из-за Go 1.4 "Internal" Package proposition ,

Для Go 1.4 мы реализуем правило сначала для $GOROOT, но не $GOPATH. Мы будем использовать преобразование компилятора и некоторые незначительные применения в стандартной библиотеке, чтобы получить опыт работы с этим правилом.

Из-за неравномерности основного репо, в качестве специального случая, элемент «/pkg/» в $GOROOT/src/pkg/… путях считается не существующим.
Это означает, что $GOROOT/src/pkg/internal может быть импортирован $GOROOT/src/cmd/… в дополнение к $GOROOT/src/pkg/….
Этот специальный случай будет удален, когда мы переместим стандартную библиотеку до $GOROOT/src/.

+0

Невозможно настроить кросс-компиляцию на Arch Linux с помощью Go 1.4? Или есть какое-то обходное решение? – m01

+2

@ m01 не то, что я знаю. Go 1.5 сделает кросс-компиляцию мертвой-простой, хотя: http://stackoverflow.com/a/28829037/6309 и https://github.com/golang/go/wiki/GoTalks#go-in-go, как https://talks.golang.org/2015/gogo.slide#18, используя goos и goarch, представленные в http://stackoverflow.com/a/30068222/6309. – VonC

+0

Ок - звучит как мои варианты: вернитесь к Go 1.3, идите вперед к dev-версии Go 1.5 или дождитесь выхода Go 1.5. Благодаря! – m01

Смежные вопросы