実行バイナリをコピーするだけではダメだった [golang]
手元の環境で go のソースをビルドして、実稼働環境にコピーして起動しようとしたら
/lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found
っていうエラーがでて起動できなかった
ビルドした環境の glibc が実行環境の glibc のバージョンよりも新しいことが原因なのはわかった。
CGO_ENABLED=0 をつければいいと書いているブログ記事もいっぱいあったけど、うまくいかない。
そもそも、 glibc の機能が必要ってことは mac で linux のバイナリ作ろうとした時には、 glibc を static link できないからうまくいかないのでは?
ここに、ヒントになりそうなことが書いてあったが、
https://qiita.com/KEINOS/items/739f83cb9ddfed43404b
(ふむふむ、 ld フラグ渡せたりするんだな)
ビルドしたい環境と実行したい環境が違っていて、自分の場合はどうすれば良いかわからない(・・・し、解決できる見込みもない)
結局、実行環境と同じ環境で go でビルドできるようにして、ことなきを得たが、ビルド環境と実行環境が別でも動くと考えない方が良さそうだな、と思った。
おそらく、ファイル操作はうまくいくけど net パッケージ使うとダメとか、簡単にできる、できないと断言できないとかそういうことなんだと思うけど。
/lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found
っていうエラーがでて起動できなかった
ビルドした環境の glibc が実行環境の glibc のバージョンよりも新しいことが原因なのはわかった。
CGO_ENABLED=0 をつければいいと書いているブログ記事もいっぱいあったけど、うまくいかない。
そもそも、 glibc の機能が必要ってことは mac で linux のバイナリ作ろうとした時には、 glibc を static link できないからうまくいかないのでは?
ここに、ヒントになりそうなことが書いてあったが、
https://qiita.com/KEINOS/items/739f83cb9ddfed43404b
(ふむふむ、 ld フラグ渡せたりするんだな)
ビルドしたい環境と実行したい環境が違っていて、自分の場合はどうすれば良いかわからない(・・・し、解決できる見込みもない)
結局、実行環境と同じ環境で go でビルドできるようにして、ことなきを得たが、ビルド環境と実行環境が別でも動くと考えない方が良さそうだな、と思った。
おそらく、ファイル操作はうまくいくけど net パッケージ使うとダメとか、簡単にできる、できないと断言できないとかそういうことなんだと思うけど。
2023-10-03 14:17
コメント(0)
コメント 0