2017-11-27 3 views
0

ich brauche einige Go-Anwendung Cross-kompilieren, damit es auf Raspberry Pi laufen wird. Bisher funktioniert es ziemlich gut mit GOARCH=arm GOOS=linux jedoch für SQLite3 es gibt ein Problem mit den importierten Symbolen:Link-SQLite3 auf ARM (x86_64 Host)

GOOS=linux GOARCH=arm go build       
vendor/github.com/mattn/go-sqlite3/sqlite3_go18.go:18:10: undefined: 
SQLiteConn 

Ich habe auch versucht

GOOS=linux GOARCH=arm go get github.com/mattn/go-sqlite3 
# github.com/mattn/go-sqlite3 
../../mattn/go-sqlite3/sqlite3_go18.go:18:10: undefined: SQLiteConn 

mit dem gleichen Ergebnis. Ich nehme an, dass ich die SQLite3-Lib für ARM holen und irgendwo hinstellen muss, damit der Go-Compiler dagegen verlinken kann?

+0

Haben Sie eine C-Toolchain für Arm haben, und Sie haben 'CGO_ENABLED = 1 '? – JimB

+0

@ JimB Ich glaube nicht, wie benutze ich das? – jdevelop

+0

Sie können den Ziel-C-Compiler mit 'CC_FOR_TARGET' auswählen. Siehe 'https: // golang.org/cmd/CGO /' – JimB

Antwort

1

Ich würde empfehlen, andere sqlite Treiber auf offiziellen wiki page erwähnt, sagen diese github.com/mxk/go-sqlite. Nur überprüft, kompiliert es perfekt für ARM.

Aber wenn Sie diese besondere Bibliothek verwenden möchten, gibt es ein Github issue dieses Problems verwandt. Kurze Antwort ist, dass Sie arm-linux-gnueabihf-gcc Bibliothek haben müssen und dann Compiler zu zwingen, es zu benutzen irgendwie so:

CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ CGO_ENABLED=1 GOOS=linux GOARCH=arm GOARM=7 go get github.com/mattn/go-sqlite3

+0

Ich habe versucht, 'Go-sqlite', während es baut und läuft auf dem Host-System in Ordnung, wenn für ARM gebaut und kopiert RPi - es scheitert mit' _: sql: unbekannt Treiber "sqlite3" (vergessen? Import) ' – jdevelop

+0

@jdevelop hier ist eine Beratung über Raspberry PI zu kompilieren selbst: https://stackoverflow.com/questions/28262389/golang-cgo-clang-with-sqlite3-c ? rq = 1 –