問題タブ [gccgo]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
go - 「gc」と「gccgo」の主な違いは何ですか?
人気のある 2 つの Go コンパイラ、「gc」と「gccgo」の主な違いは何ですか? ビルド性能?実行時のパフォーマンス? コマンドラインオプション? ライセンス?
どちらが最適かについての意見を求めているわけではなく、それらの違いの基本的な概要を示しているだけなので、どちらが自分のニーズに最適かを判断できます。
go - .so ファイルをインポートして使用する方法
gccgo で作成した .so ファイルを main.go にインポートする方法の例 (コード) を教えてください。
go - gccgo でビルドされたバイナリが小さいのはなぜですか (他の違いの中でも特に?)
私は gc と gccgo を試していて、奇妙な動作に遭遇しました。
ある定理をテストするためにかつて書いたプログラムを使用して、次の結果を得ました: (読みやすくするために不要な情報を削除しました)
次のパターンが見られます。
- で構築されたバイナリ
gccgo
は、サイズが大幅に小さくなります (そして、ストリッピングはこの違いを変えるのに役立ちません) - でビルドされたバイナリ
gc
は実行が高速です gccgo
で構築するよりも構築するのに少し時間がかかりますgc
他の go プログラムもいくつかテストしましたが (それほど広範囲ではありませんが)、それらはすべて同じ動作を示しました。
これは、この回答が述べていることと矛盾しているようです:
要するに: gccgo: より多くの最適化、より多くのプロセッサ。
コンパイルにより多くの時間を必要としながら、より多くの最適化はより高速なバイナリを意味すると思います...
この3パターンの理由は?
linux - Golang クロスコンパイル: gccgo - 認識されないコマンド ライン オプション `-marm`
Linux/arm 用の Go アプリをコンパイルしようとしていますが、Ubuntu マシンで問題が発生し続けています。ソースディレクトリで実行するGOOS=linux GOARCH=arm go build
と、次のバリエーションである大量のエラーが発生します。
# github.com/huin/mqtt
gccgo: エラー: コマンド ライン オプション `-marm` を認識できません
実行gccgo --help
すると、-g、-f -m (およびその他) で始まるオプションが gccgo によって開始されたすべてのサブプロセスに渡されることが通知されるため、どのプロセスに -marm を送信しているのかわかりません。
手がかりはありますか?Ubuntu 14.10 LTS、64 ビット
go - C から呼び出される Go の整数除算
このプログラムで整数除算を実行できます:
次に、+、-、*、および / の関数を含むプログラムを go で作成しました。そして、これらの各関数を呼び出して算術演算を実行するプログラムを C で作成しました。除算を除いて、コードは正常に機能します。
関数を含む go ファイルは次のとおりです: (calc.go)
これらの関数を呼び出す C プログラムは次のとおりです: (calcc.c)
コマンドを使用して端末でコンパイルしました:
gccgo -c calc.go
- と
gcc calc.o calcc.c -o メイン
そして、このエラーが発生しました: `__go_runtime_error' への未定義の参照 collect2: エラー: ld が 1 終了ステータスを返しました
これを修正するにはどうすればよいですか?
c - C からリンクされた net/http.Server で Go 1.5 buildmode=c-archive を使用する
Go 1.5 の今後のリリースには、Go シンボルをエクスポートしてリンクし、C コードから呼び出すことができる新しいビルドモードが付属しています。私はそれをいじっていて、基本的な「Hello world」の例が機能するようになりましたが、今、開始する Go ライブラリをリンクしようとしていますが、net/http.Server
失敗しています。コードは次のようになります (こちらからも入手できます)。
gohttplib.go:
例/c/main.c:
静的にリンクされたオブジェクトとヘッダーの生成は正常に機能します。
しかし、それに対するコンパイルは失敗しています:
これは、OS X 10.9.5 の Go github リポジトリ (38e3427) の最新バージョンを使用しています。Go 1.5 がまだリリースされておらず、それが機能するという保証がないことは理解していますが、これは教育目的で行っており、何か不足していると思われます。
関連バージョン: