問題タブ [gcc4.8]

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.

0 投票する
0 に答える
120 参照

c++ - Gnu C++ 4.8 thread_local 実装の背後にあるメカニズムと、正確な「実行時ペナルティ」とは何ですか?

gcc 4.8.0 thread_localでは、C++11 標準からの実装が追加されました。変更は、「実行時にペナルティ」が発生する可能性があると述べています。

G++ は C++11thread_localキーワードを実装するようになりました。[...] 残念ながら、このサポートでは、動的な初期化が必要ない場合でも、別の翻訳単位で定義された非関数ローカル変数への参照に対して実行時のペナルティがthread_local必要です [...]。

非定義 TU での変数の使用が動的初期化をトリガーする必要がないことをプログラマーが確信できる場合 (変数が静的に初期化されるか、定義 TU での変数の使用が別の TU での使用の前に実行されるため) TU)、-fno-extern-tls-init オプションを使用してこのオーバーヘッドを回避できます。

thread_localG++ がグローバル変数に対して何をするのか、誰か説明してもらえますか?

  • 一般的なメカニズムは何ですか?
  • 何がオーバーヘッドを誘発しますか?
  • アクセスあたりのオーバーヘッドはどのくらいですか? ポインタの間接化?高価なロック?
  • 正確には、どのような状況でオーバーヘッドが発生しませんか?

変更メモから、たとえば、これにはオーバーヘッドがないと仮定します。

data同じ翻訳単位にあるからですか?

workerdataが異なる翻訳単位にある場合、これはどのように変化しますか? これはその例ですか?

datainを使用workerするとオーバーヘッドが発生しますか? それがstartキックオフだったとしても、まだそうworkerですか?

0 投票する
5 に答える
21160 参照

gcc - Windows 7 x64 に GCC をインストールして使用する

私はGCCが初めてで、GCCについてあまり知りません。Windows 7 64 ビット PC にインストールして、C、C++、および Java で使用したいと考えています。最新バージョンは GCC-4.8.0 です。ミラー リンクで、gcc 4.8.0.tar.bz2gcc 4.8.0.tar.gzmd5.sumをダウンロードするオプションを取得しています。GCC を使用するには、どのように進めればよいか教えてください

0 投票する
1 に答える
806 参照

build - gcc-4.8 のビルド

64 ビットの Fedora 17 サーバーで gcc/g++ 4.8 をコンパイルしようとしています。ビルドプロセスを構成しています

次に、make を実行します。ビルドはしばらくチャンクし、crti.o が見つからないと失敗します。失敗する前のコンパイル手順で -m32 オプションが使用されていることに気付きました。これは、コンパイルが 32 ビット アーキテクチャに対して実行されていることを意味します。crti.o を検索したところ、/usr/lib パス (通常は 32 ビット用) ではなく、/usr/lib64 パスで見つかりました。私は 64 ビット用にのみコンパイルしたいので、configure に with-cpu 引数を含めました。明らかに、これでは十分ではありません。

ソースから 64 ビットのコンパイルのみが作成され、64 ビットのシステム ライブラリと同様のファイルのみがリンクされるようにするには、configure にどの引数を含める必要がありますか?

0 投票する
1 に答える
8781 参照

c++ - 32ビットコンパイル時の__int128エラー

32 ビット プログラムをコンパイルすると、上記のエラーが表示されます。私はhttp://sourceforge.net/projects/mingwbuilds/を使用しています

なんで?私のコードは 4.7.2 で問題なくコンパイルされましたが、バグ修正のために 4.8 に更新したかったのですが、ゼロがない場合にポインター警告の null 値として使用される 0 が削除されます。

私が望むバグ修正の多く。Windowsでx64のものをうまくコンパイルします。

x32 アプリケーションをコンパイルする方法はありますか?

0 投票する
1 に答える
133 参照

gcc4.8 - 「make check」はインストールされた共有ライブラリを見つけることができません

gcc 4.8 をインストールし、推奨されるインフラストラクチャ ライブラリを使用して問題を軽減しています。

デフォルト設定を使用してgmpをビルドおよびインストール->共有ライブラリは/usr/local/libに移動しましたislをビルドしましたが、インストールされたgmp共有ライブラリがmake checkで見つかりません。とにかくislをインストールすると、共有ライブラリは/usr/local/libに移動しました。cloog をビルドしましたが、make check もインストールされている isl または gmp 共有ライブラリを見つけることができません

そこで私は cloog-0.18.0/.libs/ に入り、/usr/local/lib/libisl.so.10.1.1 と libgmp.so.3 へのソフト リンクを作成し、失敗することなく make check を再実行しました。

これらは、gcc ftp サーバーからダウンロードされ、デフォルト構成を使用してビルドおよびインストールされる、推奨されるインフラストラクチャー tarball です。「make check」がインストールしたばかりの共有ライブラリを見つけられないのはなぜですか?

追加する必要があります:これは新しいUbuntuのインストールです

0 投票する
5 に答える
4554 参照

c++ - プライオリティ キューから unique_ptr を取得する

で一連のunique_ptrインスタンスを維持していpriority_queueます。ある時点で、最初の要素を取得してキューから削除したいと考えています。ただし、これは常にコンパイラ エラーを生成します。以下のサンプルコードを参照してください。

これにより、次のコンパイラ エラーが発生します (gcc 4.8.0)。

この質問queueのように使用するコードを変更すると、問題が修正され、コードは問題なくコンパイルされます。

unique_ptrs を aに保持する方法はありませんか、priority_queueそれとも何か不足していますか?

0 投票する
1 に答える
1623 参照

gcc - Debian、libc6 で gcc-4.8 にアップグレードした後の g++ リンカ エラー

gcc-4.7 から gcc-4.8 を実行するように Debian Weezy マシンを dist-upgrade しました。以前のビルド環境は正常で、正常にコンパイルされていました。現在、どのプログラムでも (些細な hello world であっても)、次のリンカ エラーが発生します。

これは libc6 に接続された単純なものだと確信していますが、何がわかりませんか? dpkg がすべての依存関係を処理すると想定していたので、このエラーが表示されることに非常に驚いています。したがって、この特定のシステムに問題があるのか​​ 、それとも debian パッケージに問題があるのか​​ わかりません (これはありそうもないことです)。 、他の誰もこの問題を抱えていないようです!)

何か案は?:)

0 投票する
0 に答える
4489 参照

loops - GCC Graphite - 4.8 ループの最適化

私は C++ シミュレーション フレームワークに取り組んでいます。現在のバージョンでは、2 つのボトルネックを特定しました。1 つ目は乱数の生成であり、2 つ目 (この質問の動機) は高度に反復的なプロセス (重いfor loops) の使用です。

ループの最適化に関する gcc 4.8 についてフィードバックをいただけないでしょうか。

私はこの主題に関するいくつかの利用可能な文献を読みましたが、この初期のバージョンから私が期待できることを (もっと簡単な言葉で) より明確にしていただけないでしょうか.

たとえば、 1 つの呼び出しは何ですかloop normalization... または、マルチコア アーキテクチャとは何の関係がありますか...

また、最適化オプションの背後にあるもの:

-ftree-loop-optimize ツリーでループの最適化を実行します。このフラグは、-O 以上でデフォルトで有効になります。

-ftree-loop-linear ツリーでループ交換変換を実行します。-floop-interchange と同じ。このコード変換を使用するには、GCC を --with-ppl および --with-clog で構成して、Graphite ループ変換インフラストラクチャを有効にする必要があります。

-floop-interchange ループに対してループ交換変換を実行します。ネストされた 2 つのループを入れ替えると、内側のループと外側のループが切り替わります。

そこにコードの最適化やコンパイラの専門家はいますか? どうもありがとう。

NB : 現在、Debian 4.7.2、gcc 4.7 で作業しています

0 投票する
2 に答える
2245 参照

c++11 - thread_local を使用すると、gcc 4.8.1 でメモリ リークが発生しますか?

Valgrind は、次のコードでリークされたブロックを報告しています。明らかに、スレッドごとに 1 つです。

コンパイラのバージョン:

GCC ビルド オプション:

プログラムのコンパイル オプション:

valgrind バージョン:

Valgrind オプション:

valgrind 出力の末尾:

コンストラクタとデストラクタは、スレッドごとに 1 回実行されました。

ノート:

  • 作成されるスレッドの数を変更すると、リークしたブロックの数はスレッドの数と一致します。
  • コードは、GCC がそのように実装されている場合、リソースの再利用 (つまり、リークされたブロック) を許可するような方法で構造化されています。
  • valgrind スタックトレースから、thread_local.cc:34 は次の行です。thread_local Foo foo;
  • sleep_for() 呼び出しのため、プログラムの実行には約 10 秒ほどかかります。

このメモリ リークが GCC にあるのか、設定オプションの結果なのか、それともプログラムのバグなのか、考えはありますか?