問題タブ [g++]
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.
gcc - gcc /g++およびldとのプロファイルリンク時間
私はg++を使用して、約15個のc++ソースファイルと4個の共有オブジェクトファイルで構成されるプロジェクトをコンパイルおよびリンクしています。最近、リンク時間が2倍以上になりましたが、makefileの履歴を利用できません。リンクのどの部分に時間がかかっているかを確認するためにg++のプロファイルを作成する方法はありますか?
編集: makefileが常に-O3最適化を使用していることに気付いた後、そのスイッチを削除するだけでリンク時間を半分にすることができました。試行錯誤せずにこれを見つけることができた良い方法はありますか?
編集:私は実際にldがどのように機能するかをプロファイリングすることに興味がありません。特定のコマンドラインスイッチまたはオブジェクトファイルへのリンク時間の増加をどのように一致させることができるかを知りたいです。
c++ - 複数のコアを使用して g++ でコンパイルする
簡単な質問: 大規模なプロジェクトをより速くコンパイルするために、g++ がそれ自体の複数のインスタンスを生成できるようにするコンパイラ フラグは何ですか (たとえば、マルチコア CPU では一度に 4 つのソース ファイル)。
c++ - g++ に GLIBCXX_3.4.9 を含めるにはどうすればよいですか?
g++ バージョン 4.2.3 を使用して、同じ GNU/Linux サーバーで 2 つの異なるバイナリをコンパイルしました。
最初のものは使用します:
2番目のものは次を使用します:
2 番目のバイナリが libstdc++.so.6.0.9 でのみ使用可能で、libstdc++.so.6.0.8 では使用できない GLIBCXX_3.4.9 を使用する理由
ABI ブレークを必要とし、システムに GLIBCXX_3.4.9 を強制する、g++ によって生成される新しい機能は何ですか?
この新機能を無効にして GLIBCXX_3.4.9 を必要としないようにする方法はありますか?
c++ - G++ 3.4.6 でのリンク エラーの抑制
理由は聞かないでください。リンク失敗エラーを抑制する方法はありますか?
そのような:
BLANK への未定義の参照
これはGCC 3.4.6にあります
gcc - 動的ライブラリへの静的リンク。glibc
そう。マシンに 2 つのバージョンの GCC があると問題が発生します。
3.4.6 および 4.1
これは、新しいソフトウェアのいくつかの依存関係の問題が原因です。(glibc 4.1 が必要)
この新しいソフトウェアを 4.1 ライブラリにリンクしようとすると、問題なくリンクします。ただし、ソフトウェアの実行に関しては、LD_LIBRARY_PATH で 3.4.6 を見ているため、ライブラリが見つかりません。LD_LIBRARY_PATH を 4.1 ライブラリに設定すると、3.4.6 ライブラリがそのために使用されるため、他のものを殺すとともに、シェルを爆破します。
その少しキャッチ 22。
リンク時に、LD_LIBRARY_PATH を使用せずにその共有ライブラリへの絶対パスを与える方法はありますか?
このようにして、うまくいけば両方のバージョンを使用できますが、この特定のアプリケーションには 4.1 しか使用できませんか?
c++ - GCCの複数のバージョンを使用する方法
glibc 2.4(gcc 4.1から)を必要とする新しいアプリケーションがあります。私たちが実行しているマシンにはgcc3.4.6があります。アップグレードできません。アプリケーションはこのマシンで実行する必要があります。
gcc 4.1をインストールしましたが、コンパイル時に関しては、3.4.6からのすべてのインクルードなどを使用しています。
これをどのように回避しますか?
このアプリケーションだけに4.1を使用することについて何か提案はありますか?
c++ - Cygwinで「Cコンパイラが実行可能ファイルを作成できない」に対処する
Cygwin でコンパイルしようとしても、次の出力が得られます。
ログファイルの最後の数行は次のようになります。
これは、Cygwin の新規インストールであり、G++ とその他の開発ツールが多数追加されています。このことを機能させるために何をする必要があるか考えていますか?
更新 0: ニック、 http://www.geektimes.com/linux/troubleshooting/c-cant-create-executables.htmlへのリンクは既に試されました。残念ながら、この手順は redhat 用であり、cygwin には適用されないようです。
c++ - g++ を使用した動的共有ライブラリのコンパイル
Program-Library-HOWTOの次の簡単な DL ライブラリのサンプル コードを g++ でコンパイルしようとしています。これは単なる例であるため、共有ライブラリの使用方法と作成方法を学ぶことができます。私が開発しているライブラリの実際のコードは、C++ で記述されます。
プログラムを gcc でコンパイルすると、正常に動作します。
ファイル名とコンパイラを次のように変更すると
次のエラーが表示されます。
foo.cpp:16: エラー: 'void*' から 'double (*)(double)' への変換が無効です
C ++ではvoidポインターから暗黙のキャストを実行できないことを理解しています(理解したと思います、これが間違っている場合は修正してください)が、Cでは許可されています。これが、上記のコードがgccを使用してコンパイルするが、使用しない理由ですg++. そこで、上記の 16 行目を次のように変更して、明示的なキャストを試みました。
これを行うと、次のエラーが表示されます。
foo.cpp:16: エラー: 代入で 'double*' を 'double (*)(double)' に変換できません
これらの問題は、他の何よりも、適切な C++ コーディング標準に対する私自身の一般的な無知に関係している可能性があります。C++ のサンプル コードを使用する Linux 用の動的ライブラリの開発に関する優れたチュートリアルを教えてくれる人はいますか?
xcode - Xcode / GCC リンクの問題: ファイルが必要なアーキテクチャではない
ブースト 1.37 と wxwidgets を含む Windows プロジェクトを Mac に移植しようとしています。それは問題なくコンパイルされますが、リンカーは libz.1.dylib に対して「ファイルはアーキテクチャ ppc に必要なアーキテクチャではありません」というエラーを表示し、他のいくつかのライブラリの警告と同じメッセージを表示します。また、libz.1.dylib に対して「dylib が重複しています」という警告が表示されます。
リンカーの出力は次のようになります。
プロジェクト「Gemsweeper Mac」のターゲット「Gemsweeper Mac」を構成「Debug」でビルド</p>
依存関係の確認
私は Mac プラットフォームにまったく慣れていないので、どんな助けでも大歓迎です!
ありがとう、
エイドリアン