問題タブ [libstdc++]
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.
c++ - C++STLバージョン管理の問題+ブースト
私は、single.soファイルとしてユーザーに配布したいC ++ライブラリを構築してきました。うまくいけば、その.soファイルはほとんどの場合ディストロに依存しません。したがって、私はサードパーティのライブラリを静的にリンクしています(ただし、標準ライブラリに動的にリンクしています)
現在、CentOS 6.2(64ビット)のg ++で正常にビルドされますが、CentOS5.3でのビルドに問題があります。コンパイルは正常に実行されますが、リンカーエラーが発生します。
エラーを検索しましたが、標準ライブラリ自体のバージョン管理に問題があるようです。私のコード、またはむしろboost :: threadのコードは、CentOS5.3に含まれている標準ライブラリに存在しない新しいバージョンのコードを呼び出そうとしています。
理解できる。だから私はどちらかをする必要があります:
- C ++標準ライブラリに対して静的にリンクします(これについていくつかの調査を行いましたが、64ビットシステムでは非常に苦痛です。ほとんどの64ビットシステムに含まれているlibstdc ++。aは-fPICで構築されておらず、-fPICは実際には64ビットシステムで静的リンクを実行する必要があります。実際にlibstdc++。aを自分でビルドする必要があります。うーん...
- boost::timerをより互換性のあるバージョンに戻します。私は主にポータブルミューテックスに使用しているので、最先端のboost::thread機能は必要ありません。しかし、これには独自の問題があります。ブーストWebサイトのどこで、標準ライブラリへの依存関係(およびどのバージョン)を文書化していますか。彼らはそれをまったく文書化していますか?情報が見つからないようです。また、これは賢明な選択ですか?標準ライブラリが私にもたらす可能性のある他の厄介な驚きは何ですか?
私の目標(可能な限りディストリビューションにとらわれない)を考えると、どのルートをお勧めしますか?
c++ - libstdc++ init と mingw
私はmingwを使用してC++ライブラリに取り組んでいます。ただし、C++ ランタイムを通過する関数呼び出しを実行するとすぐに、sigsev が取得されます (「アクセス違反」は Windows です)。これは、C++ 構造体の初期化が実行されていないと思います。次のいずれかを希望します。
1) なぜこれが起こるのかについての具体的なアイデア。もしくはそうでないか:
2) ランタイムを初期化するために libstdc++ のどの関数を実行する必要があるかについてのヒント。
助けてくれてありがとう。
c++ - gcc stdlib を使用した icpc C++11
私は icpc (非オプション) を使用しており、-std=c++0x でコンパイルしているので、ランバを使用できます。
ただし、そうすると、一方がサポートしていて他方がサポートしていない機能を備えた gcc stdlib で havok が作成されます。
定義してみました
しかし、それは役に立ちませんでした。
したがって、理想的には、C++03 stdlib で c++0x 言語機能を使用できるようにすることを求めています。
gcc 4.6
ICC 12.1]
エラーの編集例:
gcc - libstdc++ の依存関係はどのように決定されますか?
Linux では、同じマシン上に A と B の 2 つのバイナリをビルドしました。少し古い libstdc++ がインストールされた別のマシンに移動します。バイナリ AI で ldd -v を実行すると、次のようになります。
バイナリ BI で ldd -v を実行すると、次のようになります。
GLIBCXX_3.4.15 の依存関係が見つからないことに注意してください。インストールされた libstdc++ は GLIBCXX_3.4.10 までしかサポートしていないため、これは理にかなっています。
問題は、バイナリ B が GLIBCXX_3.4.15 に依存していると ldd が判断するメカニズムは何ですか? さらに重要なのは、この依存関係を引き起こしているコードを特定するにはどうすればよいですか?
c++ - 弦のトラブル
現在、かなりのプログラムをデバッグしています。次のコード行に到達すると:
プログラムが正しく動作しません。ここで、value は、std::string 型の binary_string という名前のメンバーを持つ構造体へのポインターです。デバッグ中にこの行に到達すると、次のことがわかります。
このコード行の実行後、value->binary_string は空です! 行を次のように変更しました
それでも失敗します!
デバッグ中にこの行に到達すると、私のプログラムは約 100 Mb のメモリを使用しているため、メモリの問題ではないと思います (ただし、これを確認するために Valgrind を実行しています)。Ubuntu 11.10、g++-4.6、および libstdc++6 を使用しています。
誰もこのようなことに遭遇したことがありますか?ストリングが機能しない理由がわかりません。
ありがとう、
サム
EDIT1:
値のタイプは NumberInst で、以下に定義されています。
EDIT2:
少し絞って検索したようです。デバッグ中に、いくつかの印刷コマンドを試しました。
このコンテキストでは substr が正しく機能していないようです。しかし、メイン関数で substr をテストしたところ、問題なく動作しているように見えました。
c++ - 非常に基本的な正規表現のシナリオは、libstdc++-v3での私の期待とは異なります。
予想とは異なる動作が発生します(また、Microsoft C ++とも異なります)。
次のtest.cppファイルについて考えてみます。
私のUbuntuOneiricボックスで、プログラムのコンパイル方法と、a.outから取得した出力に注意してください。
一方、私のWindowsマシンでは、VisualStudio2010を使用して次のことを行いました。
私は専門家ではありませんが、MicrosoftVisualStudioが正解のようです。これは非常に基本的なシナリオなので、何が起こっているのだろうか。私はそれがバグだとは信じられませんし、MSとGNUの間のそのような基本的なレベルでの根本的な不一致も信じられません。構成またはコマンドラインに何かが疑われます。デフォルトのUbuntu11.10クライアントをインストールした後、g++コンパイラとヘッダーを取得しました。「apt-getinstallbuild-essentials」を使用しました。
私が見逃しているコンパイルスイッチ、またはMSとGNUの間の根本的な不一致である可能性があります
php - SWIGで作ったphp拡張機能を読み込むとシンボルが未定義になる
SWIG を使用して作成された PHP 拡張機能を読み込もうとしていますが、PHP の起動時に次のエラーが発生します。
ロードしようとしている拡張機能には名前が付けられlibtg.soており、次のコマンドでコンパイルされています。
はlibtg_wrap.o、SWIG によって生成されたラッパー コードのオブジェクト ファイルです。
次のコマンドから明らかなように、不足しているシンボル__gxx_personality_v0は にあります。libstdc++.so
libstdc++.solibtg.so次のコマンドから明らかなように、で参照されています。
そのため、シンボルが見つからない理由がわかりません。これをさらにデバッグする方法についてのアイデアはありますか?
gcc - libstdc++ を静的にリンクして共有ライブラリを作成すると失敗する
64 ビット x86 マシンで gcc 4.5.1 を使用して、最初に次のように ao を作成します: g++ -fPIC -c a.cc -o ao
次に、次のように liba.so を作成してみてください: g++ -static-libstdc++ -shared -W1,-soname,liba.so -o liba.so.1.0.0 ao
次の情報で失敗しました: 再配置 R_X86_64_32S に対する `vtable for __gnu_cxx::stdio_filebuf >' は、共有オブジェクトを作成するときに使用できません。-fPIC で再コンパイル
-fPIC を追加して libstdc++ ライブラリを再コンパイルしようとしましたが、とにかく失敗しました
gcc - GDB エラー メッセージ (GCC 4.7) (macports から)
gdb を起動すると、次のようなメッセージが表示されます。
libstdc++ を再度フェッチする必要があるようですが、macports ではどうですか?
linux - アップグレードされたビルド マシン (Debian)、ビルドがサーバー (CentOS) で動作しない
C++/Free Pascal 混合プログラム、Linux。以前は 32 ビットの Debian ボックスでビルドし、64 ビットの CentOS 5.3 サーバー ボックスで実行しましたが、問題なく動作しました。Debian ボックスを 6.0.3 (Squeeze) にアップグレードしました。次の再構築後、プログラムはサーバー ホスト上で実行されなくなり、代わりに次のように出力されます。
を実行するls -l /usr/lib/libstdc++*と、開発ボックスlibstdc++.so.6では へのシンボリック リンクlibstdc++.so.6.0.13であるのに対し、ホストでは へのシンボリック リンクであることがわかり libstdc++.so.6.0.8ます。それが犯人かもしれません。
トラブルシューティング戦略を提案できますか? どうにかして以前のバージョンの libstdc++ を開発ボックスに置いて、それに対してリンクを試みるか、製品ボックスをアップグレードする必要がありますか?