Перейти к кросс-компиляции программирования для фреймворка Revel

Я использую фреймворк Revel для создания веб-приложения. Я кросс-компилирую его для ARM с помощью команды GOOS=linux GOARCH=arm revel package mitm

Это отлично работает, однако я только что включил библиотеку github.com/google/gopacket

и теперь кросс-компилированная сборка дает сбой (она отлично работает на OSX, на которой я разрабатываю).

Я получил:

ОШИБКА 27.07.2015, 09:01:30 build.go:101: # mitm/app/controllers go/src/webserver/app/controllers/ArpScan.go:88: undefined: pcap.OpenLive go/src/webserver/ app/controllers/ArpScan.go:88: undefined: pcap.BlockForever go/src/webserver/app/controllers/ArpScan.go:114: undefined: pcap.Handle go/src/webserver/app/controllers/ArpScan.go: 145: не определено: pcap.Handle

pcap — это библиотека, импортированная из gopacket:

import "github.com/google/gopacket/pcap"

Мой вопрос в том, как мне заставить его кросс-компилировать эту библиотеку?

Я запустил go-crosscompile-build-all Дейва Чейни (ссылка), но это просто создает стандартную библиотеку.


person amlwwalker    schedule 27.07.2015    source источник
comment
Этот пакет использует cgo, у вас есть компилятор C для целевой архитектуры?   -  person Ainar-G    schedule 27.07.2015
comment
Ах, хорошо, значит, мне нужен кроссплатформенный компилятор C на моем Mac, чтобы иметь возможность скомпилировать эту библиотеку для ARM? У вас есть ссылка на какой-нибудь учебник? как проверить, есть ли у меня компилятор C для этой архитектуры? Я не устанавливал его сознательно. Каковы шаги, когда он у меня есть?   -  person amlwwalker    schedule 27.07.2015
comment
У меня нет компьютера с OS X, поэтому я не могу с этим помочь. Найдите кросс-компиляторы в репозиториях brew, а если их нет, найдите инструкции по их сборке.   -  person Ainar-G    schedule 27.07.2015
comment
Попробуйте это: github.com/tpoechtrager/osxcross (а затем поймите, какая огромная боль кросс-компиляция C между ОС и архитектурами, и просто загрузите небольшую виртуальную машину Ubuntu с необходимыми для сборки и инструментальной цепочкой Go, установленной через github .com/travis-ci/gimme)   -  person elithrar    schedule 27.07.2015
comment
Итак, у меня были небольшие улучшения ... Я вытащил последнюю версию (код 1.4.2 src). Я запустил bash all.bash, и это казалось успешным. Когда я запускаю C=arm-linux-gnueabihf-gcc GOOS=linux GOARCH=arm revel package mitm, я получаю сообщение об ошибке: go build runtime: linux/arm должен быть загружен с помощью make.bash. Затем я запускаю GOOS=linux GOARCH=arm ./make.bash --no-clean, что успешно, однако это не позволяет успешно собрать revel   -  person amlwwalker    schedule 27.07.2015
comment
Вы можете попробовать получить go1.5beta2, где выполняется кросс-компиляция намного проще . Сам Go 1.5 должен выйти в следующем месяце.   -  person Ainar-G    schedule 27.07.2015


Ответы (1)


Попробуйте goxc. Для этого требуется исходный код и набор инструментов go, но он работает хорошо.

person Brandon S    schedule 18.05.2017