問題タブ [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.

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

dynamic - libstdc++のライブラリ検索パス

GLIBCXX_3.4.11を使用して、libstdc++。soに対して動的にリンクされた共有ライブラリをコンパイルしました。stdc++ライブラリがバージョン3.4.10のみの人にコードを送信したいと思います。彼にライブラリのバージョンを更新するように依頼するのではなく(これはソフトウェアの顧客であるため、システムファイルを変更する意思がある、または変更できるとは思いません)、適切なバージョンのlibstdc++。soを出荷したいと思います。私のコードのディレクトリの場所を含むlibフォルダ。適切な(後の)バージョンを使用するために自分のコードを取得するにはどうすればよいですか?/etc/ld.so.confにディレクトリ/lib64が含まれていることがわかりました。このディレクトリには、問題のある古いバージョンのlibstdc++。soがあります。LD_LIBRARY_PATHを設定しても、これは上書きされません。これは、宣伝されている動作から逸脱しているようです。なぜこれが起こっているのか考えていますか?かなり単純なタスクを完了するにはどうすればよいですか?

ありがとう。

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

gcc - Windows でデバッグ シンボルを使用して GCC の libstdc++ をビルドする

私が持っている MinGW ツールチェーン ビルドでデバッグできなかったクラッシュが発生するまで、主に Windows で GCC を使用してアプリを開発しています。Linux VM をインストールし、そこでデバッグしました。必要なシンボルが libstdc++ に含まれていたので、これは可能でした。

libstdc++ の Linux ビルドはリリース (最適化されたバージョン) だったと確信しています。これは、使用するすべてのアプリにインストールするのが通常であるためです。Windows版も同様です。しかし、どうすれば Linux バージョンに必要なデバッグ シンボルを組み込むことができますか? または、本当に答えが欲しい質問をした場合: どうすれば GCC の libstdc++ をビルドして、そこから有用なスタック トレースを取得し、最適化することができますか? ? (注: GCC/MinGW を再コンパイルできるので、問題ありません)

Visual Studio にはデバッグ バージョンとリリース バージョンの両方があることは知っていますが、Linux でそのようなことを聞​​いたことはありません。私が覚えているように、デバッグシンボルは常に別のパッケージにあります。

情報: プレーンな GCC パッケージがインストールされた Arch Linux を使用していました (特別なデバッグ バージョンは明示的に選択されていません)。

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

gcc - ubuntu11.04でカスタムビルドされたgcc4.6.0は間違ったlibstdc++をリンクします

私のホームディレクトリのubuntu10.04にインストールされているカスタムビルドのgcc4.6.0は、ほとんどの場合、カスタムビルドの代わりにシステムlibstdc ++をリンクします(lddで証明されています)。さらに不可解なことに、この新しく構築されたgccを使用すると、カスタムコンパイルされたopenmpiライブラリが正しくリンクされます。これは、私がコンパイルした唯一のソフトウェアで、正常に動作します。誰かがこれについて何か説明、または回避策を持っていますか?

ありがとう

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

c++ - 新しいバージョンのg++でコンパイルされた共有オブジェクトの使用

g ++ 4.5でコンパイルする必要のある共有オブジェクトがいくつかありますが、それらをg++4.1およびg++4.2を使用してコンパイルされたアプリケーションにリンクできるようにしたいと思います。

libstdc ++の異なるバージョンが互いに互換性があることを保証するものではないので、これはいくつかの変更なしでは機能しないことを理解しています。

新しいバージョンのg++とそれに関連するライブラリをターゲットマシンにインストールする以外に、これを行うための標準的な方法はありますか?

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

c++ - OS-X Leopard(10.5.8)を使用して、OS-X Snow Leopard(10.6.7)でコンパイルされたアプリケーションを別のMacで実行できません。libstdc++。6.dylibエラーが返されました

MaxOS-XでC++0xとOgreを使用してC++プロジェクトを移植しようとしていますが、OS-Xバージョン間で移植性の問題が発生します。

GCC4.6.0を使用してMacOS-X10.6(Snow Leopard)でプロジェクトをコンパイルすることに成功しました(C ++ 0xが必要だったため)。大変でしたが(おそらく私が新しいOSXユーザーだったため)、最終的にエラーなしでコンパイルされました。

必要なすべてのコンポーネント、フレームワーク、プラグインなどをApplication.appバンドルに含めましたが、このMacOS-X10.6では正常に起動します。

しかし、Mac OS-X 10.5.8がインストールされている古いラップトップにプロジェクトを転送すると、アプリケーションを実行できません。

.appをダブルクリックすると起動しようとし、最後にメニューバーからアイコンが消えます。これですべてです。しかし、.appに含まれている実行可能ファイルを直接実行すると、次のエラーが返されます。

これがアプリケーションバンドルツリービューです。

MyProject.app

  • コンポーネント
    • ... (鬼のコンポーネント)
  • フレームワーク
    • Ogre.framework
  • マックOS
    • MyProject (実行可能)
  • プラグイン
    • ... (Ogreプラグイン)
  • 資力
    • ... (Ogre .cfg +私のアセット)

私はCmakeにMacOSX10.5.sdkを使用するように指示しました(CMakeList.txt内ではなくCmake GUI内で設定):

  • CMAKE_OSX_DEPLOYEMENT_TARGET 10.5
  • CMAKE_OSX_SYSROOT /Developer/SDKs/MacOSX10.5.sdk

しかし、それは何も変わらないようです...


libstdc ++。dylibファイルは、アプリケーションのコンパイルに使用されるMacのlibstdc ++。6.0.9.dylibにリンクしますが、移植性のテストに使用されるMacのlibstdc++。6.0.4.dylibにリンクします。

しかし、MacOSX10.5.sdkを使用するように指示したので、コンパイル時にlibstdc ++。6.0.4.dylibを使用するので、10.5がインストールされたMacで実行できます。

実際の目標は、何も変更せずに2番目のMac(および10.5以降を使用するすべてのMac)で実行できるようにすることです。ダウンロードして実行するだけです...

誰かが私がここで欠けているものを教えてくれますか?(私はOS-Xの方法と構成に精通しているとは感じていないので、非常に基本的なものを見逃していた可能性があります。粗雑になることを恐れないでください^^)。

CmakeでターゲットSDKを指定するにはどうすればよいですか?(使用されているCmakeコマンドは十分ではありませんか?)


私はプロジェクトをコンパイルするために以下を使用します:

  • Mac OS-X 10.6.7
  • GCC 4.6.0
  • Cmake 2.8-4
  • Ogre 1.7.3

私はプロジェクトをテストするために以下を使用します:

  • Mac OS-X 10.5.8(いくつかの開発ツールがインストールされています。アプリケーションに干渉する可能性がある場合に備えて、それを伝えなければならないと思います)。

編集:

ここでotoolを発見したので、返されたログです

明らかに、gcc46 libstdc ++。6.dylibにリンクしています(このファイルにはGCC4.6.0のC++ 0x関数が含まれていると思うのでおそらく正常です)。

それで、解決策はありますか?(-staticは、動的が必要であることを示すエラーを返します...)

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

c++ - GCC 4.6 を使用してコンパイルされた OSX アプリケーションをデプロイする

私のプロジェクトを Mac OS-X に移植しようとしています。

C++0X を使用してプロジェクトを開発したとき、Xcode で提供されているもの (Xcode4 でさえ) よりも新しいバージョンの GCC が必要だったので、Snow Leopards Mac で GCC 4.6 をコンパイルしました。

私のプロジェクトは正常にコンパイルされ、コンパイルしたコンピューター (OS-X 10.6.7) でも起動しますが、MacBook (OS-X 10.5.8) に転送すると機能しません。

次のエラーが返されます。

dyld: 遅延シンボル バインドに失敗しました: シンボルが見つかりません: __ZNSo9_M_insertImEERSoT_ 参照元: /Users/zu/Desktop/OgreApp.app/Contents/MacOS/OgreApp

dyld: シンボルが見つかりません: __ZNSo9_M_insertImEERSoT_ 参照元: /Users/zu/Desktop/OgreApp.app/Contents/MacOS/OgreApp 予期される場所: /usr/lib/libstdc++.6.dylib

プログラムには GCC 4.6.0 の libstdc++.6.dylib が必要であることを理解しています。標準の libstdc++.6.dylib は、通常 OS-X システムに含まれています。

だから私は次のことを試しました:

  • -isysroot /Developer/SDKs/MacOSX10.5.sdk -mmacosx-version-min=10.5を指定して、OS-X 10.5 との下位互換性を確保します。しかし、エラーは同じままです。

  • otool -Lを使用して libstdc++.6.dylib パスを確認し、install_name_tool -change /opt/local/lib/gcc46/libstdc++.6.dylib @executable_path/../Libraries/libstdc++.6.dylibを使用して共有ライブラリ パスを変更します。 OgreApp (Libraries フォルダーに gcc 4.6.0 libstdc++.6.dylib のコピーを含む)は、以前の質問の回答として提案されています。しかし、エラーは同じままです。

  • -static-libgcc - static-libstdc++を使用して libstdc++ と libgcc を静的にリンクします。しかし、それでも同じエラーが返されます。

私のプログラムは Ogre フレームワークを使用しているため、上記の操作を Ogre.framework に埋め込まれた Ogre 実行可能ファイルにも適用しましたが、何も変わりません。

非標準のlibstdc ++で作成されたアプリケーションを、古いバージョンがインストールされた別のMacコンピューターに展開する方法を誰かが説明できますか(プログラムがGCC 4.6を使用するため、Snow Leopardを実行しているコンピューターでも問題は同じだと思います) .0 libstdc++) ?

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

macos - OS X 10.5 で libc と libstdc++ を更新するにはどうすればよいですか?

Mac Mini をビルド エージェントとして使用しており、標準ライブラリをアップグレードする必要があります。MacPorts で libc も libstdc++ も見つかりません。

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

c++ - libstdc++ を静的にリンクする方法

libstdc++ のバージョンが異なる別のマシンでプログラムを動作させようとしています。私はそれをネットビーンズで開発およびコンパイルしています。オプション -static-libstdc++ を指定しましたが、プログラムは引き続き libstdc++.so.6 をローカル マシンにロードしようとします。

完全に静的な libstdc++ リンクを取得するにはどうすればよいですか?

ありがとう。

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

solaris - solaris sparc 9/10 libstdc++ の互換性の問題 (64 ビット)

sparc9 および sparc10 システムに gcc 3.4.6 をインストールしました。sparc10 で共有オブジェクト (sparc9 でビルド) を使用しようとすると、非互換性の問題が発生します。sparc9 システムで同じ共有オブジェクトを使用しても問題はありません。メイクファイルからのスニペット:-

sparc10で次のようになりました:-

上記の出力では、正常に見える他の依存関係をスキップしました。

次に、上記の参照されていないシンボルについて、/usr/local/lib/sparcv9 の libstdc++.so.6 に対して「nm」を実行したところ、次の結論が得られました。

注意深く見ると、sparc9 と sparc10 の修飾名シンボルの違いがわかります... "ExSt12" v/s "ElSt12"。

同様に、sparc10 で myapi.so をビルドすると、V9 と V10 のシンボルの不一致が原因で、sparc9 で失敗します。

私が何かを見逃しているかどうかについて、誰かが私に役立つヒントを教えてもらえますか? または、V9 にパッケージをインストールする必要がありますか。V9 で構築された共有オブジェクトは V10 で動作するはずです。

V9 の libstdc++.so.6 のサイズが V10 と異なることを付け加えておきます。V9 には SMCgcc があり、V10 には SUNWgccruntime と SMCgcc の両方があります。