前提・実現したいこと
GORMでsqliteを用いたWindowsとLinuxの両方で使うプログラムを作っています。
プログラムをWindowsからLinux向けにクロスコンパイルしたかったのですが、sqliteを使用するために内部でcgoが使われていて失敗してしまいます。
よろしくお願いします。
発生している問題・エラーメッセージ
# runtime/cgo _cgo_export.c:1:0: error: -fPIC ignored for target (all code is position independent) [-Werror] /* Code generated by cmd/cgo; DO NOT EDIT. */ ^ cc1.exe: all warnings being treated as errors
該当のソースコード
go
1package main 2 3import ( 4 "gorm.io/driver/sqlite" 5 "gorm.io/gorm" 6 "log" 7) 8 9type Product struct { 10 gorm.Model 11 Code string 12 Price uint 13} 14 15func main() { 16 db, err := gorm.Open(sqlite.Open("./test.db"), &gorm.Config{}) 17 if err != nil { 18 log.Fatal(err) 19 } 20 21 db.AutoMigrate(&Product{}) 22 23}
設定した環境変数:
GOOS=linux GOARCH=amd64 CGO_ENABLED=1
試したこと
- CGO_ENABLED=1 を設定する
エラーもバイナリも何も出力されていない状態から上記のエラーが表示されるようになりました。
- database/sql に対応していて、cgo参照が無いライブラリを探す
まともに使えそうなものはありませんでした。
補足情報(FW/ツールのバージョンなど)
- 使用している環境
Windows 10 Home 20H2 64bit
Go 1.16.5
TDM-GCC-x64
gorm 1.21.12
- クロスコンパイルしたものを使いたい環境
Ubuntu 18.04.4 LTS x86_64
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/08/01 06:49