コンパイラフラグ "-lstdC++"を呼び出すことによってどの標準が呼び出されますか? "-lstdC++ 11"と同様に、C++ 11標準が呼び出され、同じことが "-std = C++ 11"によって呼び出されます。-lstdC++と-lstdC++の違い11
1
A
答えて
2
-l
フラグは、規格準拠を変更しないため、リンクするライブラリを指定するために使用されます。
従って、-lstdc++
は、libstdc++.a
またはlibstdc++.so
という名前のライブラリにリンクします。私のシステムでは、そのライブラリは/usr/lib/x86_64-linux-gnu/libstdc++.so.6
にありますが、一般にあなたのシステムでは異なります。
これはlibSDL.so
とリンクする-lSDL
のようなものを指定すること、またはlibpng.so
とリンクする-lpng
を指定することと変わりありません。
特定のバージョンのC++標準を使用する場合は、-std
オプション(-std=c++11
など)を使用します。これにより、正しいライブラリがリンクされるので、何もする必要はありません(例えば、-l
オプションを使用するなど)。
2
コンパイラはここでは指定しませんが、それはclang++
またはg++
などと似ているとします。
次に、フラグ-l<library>
は、リンクするときにライブラリ<library>
を検索するように指定するだけです。この検索には、ライブラリパスに追加された可能性のある検索ディレクトリおよびその他の標準的なリストが含まれます。
したがって、フラグ-lstdc++
は、リンク時にライブラリを検索する必要があることを示しています。 は、コンパイラがコンパイルしていると考えるはずの、C++のバージョンにはという効果がありません。対照的に
、フラグ-std=c++
は、一般的に、コンパイラへのスイッチとして作用する:
- が使用中のC++のバージョンを示しています。
- 自動的に対応するライブラリを引き起こし、検索パス
関連する問題
- 1. NetBeans IDE、C++、およびリンク-lstdC++ fs
- 2. Theanoがlstdcを見つけることができません++
- 3. Qtプロジェクトをコンパイルするときにエラーが-lsbmlと-lstdC++を見つけることができません
- 4. Ubuntu 14.04でopencvをビルドできませんでした。[-lstdC++が見つからない]
- 5. Clang ++は、-lstdC++を使用した場合、extern "C"の名前を変更します。
- 6. なぜ私はまだ-lstdC++ fsを使用する必要がありますか?
- 7. セグメント違反11 swift2
- 8. std :: map insert()ヒント位置:C++ 98とC++の違い11
- 9. C++ 11: "パラメータパック"と "バリデーショナルテンプレート"の違いは何ですか?
- 10. appengineデータストアタイムアウトエラー5と11の違いは何ですか?
- 11. C++ 98とC++ 11の違いは動作の違いを示していますか?
- 12. C++ 11:boost :: make_tupleはstd :: make_tupleとどう違うのですか?
- 13. SUSE SLED 11 SP2対g ++とUbuntu 14.04の違いを説明する
- 14. Swift 4/XCode 9/iOS 11のヘッダーロゴが間違っています
- 15. ios 11 - App Storeのアップデートボタンが間違っています
- 16. 列の値が '2017-11-%'で間違っています
- 17. とiOSの11
- 18. なぜereg( "^ \ d {11} $"、18311111111)が間違っていますか?
- 19. C++ 11:TとTの宣言型の振る舞い[両者の振る舞いの違い]
- 20. レガシーコンポーネントとFirefox 11
- 21. C#ブラウザのバージョンは、Windows 11の間違ったバージョンを取得
- 22. {!!の違い!!}と{{}}
- 23. 「 '」と「'」の違い
- 24. 違いダウンケースとダウンケースの違い! Rubyで
- 25. iOS 11の間違った位置にあるUISearchBar
- 26. C++ 11 2回の違いを比較する汎用関数ですか?
- 27. Open GL ES - GLenumとGlintの違いとGLintとGLsizeiの違い
- 28. javaとC++ 11 volatile
- 29. Boost.RegexとC++ 11 Regex
- 30. PythonとPandasの違いの相違点
にしかし、私の場合には、追加するパスを含めるi「は-std = C++ 11」を追加してもなく、含まなっているライブラリは、「あります - lstdC++ "ではなく、" -lstdC++ 11 "ではありません。 – geek
@geek:これはライブラリの名前にすぎません。コンパイラは 'g ++'とも呼ばれ、 'g ++ 11'という別のコンパイラを使う必要はありません。 –
@geekもちろん、ライブラリはまだ 'stdC++'と呼ばれています...実際にはあなたのファイルシステム上に別のライブラリがあります – donkopotamus