質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

1回答

1164閲覧

Windowsの開発環境でビルドしたバイナリファイルがlinux環境で動かない

tomagurosu

総合スコア37

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

0グッド

2クリップ

投稿2018/04/18 03:00

windows環境のgoでlinux用にコンパイルしたのですが
以下のエラーメッセージが表示され実行されません。
"cannot execute binary file"
以前クロスコンパイルをした時には問題なく実行できるファイルをビルドできたのですが
なぜか再び行うと実行できないファイルがビルドされてしまいます
osの情報は間違いのないことを確認済みです。
下記はgo envの結果です、またgoのバージョンは1.9.5になります。
どなたかご教授お願いします。

bash

1set GOARCH=amd64 2set GOBIN= 3set GOEXE= 4set GOHOSTARCH=amd64 5set GOHOSTOS=windows 6set GOOS=linux 7set GOPATH=C:\Users...\go 8set GORACE= 9set GOROOT=C:\Go 10set GOTOOLDIR=C:\Go\pkg\tool\windows_amd64 11set GCCGO=gccgo 12set CC=gcc 13set GOGCCFLAGS=-fPIC -m64 -fmessage-length=0 14set CXX=g++ 15set CGO_ENABLED=0 16set CGO_CFLAGS=-g -O2 17set CGO_CPPFLAGS= 18set CGO_CXXFLAGS=-g -O2 19set CGO_FFLAGS=-g -O2 20set CGO_LDFLAGS=-g -O2 21set PKG_CONFIG=pkg-config

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

こちらが参考になります
ttps://qiita.com/Jxck_/items/02185f51162e92759ebe

あと

linux用にコンパイル

とありますが、相手先も64bit環境でしょうか?

もしかすると
上の設定でlinuxの「64bit環境」か「32bit環境」のフラグを設定する必要があるかもしれません。

投稿2018/04/18 03:53

kawakawa2018

総合スコア1195

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tomagurosu

2018/04/18 03:59

参考URLありがとうございます。 64bitでしたのでGOARCH=amd64の用に設定しているのですが ビルドしたバイナリファイルは実行されないようです。
kawakawa2018

2018/04/18 04:52

「ビルドしたバイナリファイルは実行されない」 そうですか。 1.これはWin環境でのエラーですか? それともLinux 64bitでの実行結果でしょうか?  2.(もしLinux上だとして)もしかしてバイナリファイルの実行権-xが設定されていない、とか。 念のためls -lでモードを確認してください。
tomagurosu

2018/04/18 05:54 編集

1 GOOS=linux,GOARCH=amd64でビルド後のバイナリファイルを   linux64bit環境での実行した結果です。 2 確認結果”-rwxrwxr-x” 全対象に実行権限を設定しています。
kawakawa2018

2018/04/18 06:23

ちょっと手元に検索、実行環境がないので正しく回答できませんが。 1.「set CGO_ENABLED=0」 これは問題ないですか?  もし「0」がFalseの意味?でしたら、この設定は無視され、実行されないことになります。 2.setで設定している他のオプション、これに値がセットされていないので、これらの意味、働きを1つ1つ確認し、目的のクロスコンパイル、(必要な)ライブラリのリンクができているか 確認してみてください。 3.Go自体をダウングレードして、違うバージョンでテスト、検証してみる。 これくらいしか、思い浮かばないですね。
tomagurosu

2018/04/18 07:07

いくつかの解決案の提示ありがとうございます。 順を追って試してみたいと思います
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問