golangクロスコンパイルsqliteの問題解決-cgoクロスコンパイル


ところで、削除タスクを書いた小物は、sqliteでは、githb.com/matn/go-sqlite 3というライブラリでdatabase/sqlインターフェースをサポートしています。デフォルトではcgoはクロスコンパイルが許されていません。私は下開発のCntosでcgoをコンパイルしたいです。仕方なくdockerを取り出します。
docker run --rm -v $GOPATH:/go golang:1.10 bash -c 'cd $GOPATH/src/code && CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build delete_task.go'
必要に応じて変更できます。コンパイルが終わったら自動的に容器を削除します。
  • –rm削除容器
  • -v宿主gopathを容器gopathにマッピングします。このようにして、パケットコードをダウンロードする必要がないです。
  • golang:1.10 goミラーバージョン
  • bash-c直接bashコマンド
  • cd$GOPATH/src/codeは容器プロジェクトディレクトリに入りました。-vはすでに宿泊ホストの上の項目をコンテナに入れました。
  • CGO_ENABLED=1 GOOS=linux GOARCH=amd 64 go build delete_task.goコンパイルdelete_task.goプログラムファイル