2017-11-27 3 views
0

일부 Go 응용 프로그램을 크로스 컴파일해야 Raspberry Pi에서 실행됩니다. 지금까지 그러나 SQLite3를 들어, GOARCH=arm GOOS=linux 꽤 잘 작동 일부 문제는 가져온 기호가있다 :ARM (SQL_64 호스트)에서 SQLite3에 연결

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

내가 같은 결과

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 

을 시도했다. 나는 ARM을위한 SQLite3 lib를 가져 와서 어딘가에 넣을 필요가 있다고 생각한다. 그래서 Go 컴파일러가 그것에 링크 할 수 있을까?

+0

당신이 암에 대한 C 툴체인을해야합니까, 당신은'CGO_ENABLED = 1'해야합니까? – JimB

+0

@JimB 나는 그렇게 생각하지 않는다. 어떻게 사용합니까? – jdevelop

+0

'CC_FOR_TARGET'으로 타겟 C 컴파일러를 선택할 수 있습니다. – JimB

답변

1

공식 wiki page에 언급 된 다른 sqlite 드라이버를 확인하는 것이 좋습니다.이 말은 github.com/mxk/go-sqlite입니다. 그냥 체크, 그것은 완벽하게 ARM을 컴파일합니다.

그러나이 특정 라이브러리를 사용하려는 경우이 문제와 관련된 Github issue이 있습니다. 짧은 대답은 arm-linux-gnueabihf-gcc 라이브러리가 다음과 같이 어떻게 든 그것을 사용하는 컴파일러를 강제 할 필요가 있다는 것입니다 :

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

'go-sqlite'를 시도해 보았습니다. ARM 용으로 빌드되어 RPi에 복사 될 때 호스트 시스템에서 잘 실행되고 실행되는 동안 -'_ : sql : 알 수없는 드라이버 "sqlite3"(잊어 버린 가져 오기?) ' – jdevelop

+0

@jdevelop는 Raspberry PI 자체에서 컴파일하는 방법입니다. https://stackoverflow.com/questions/28262389/golang-cgo-clang-with-sqlite3-c ? rq = 1 –

관련 문제