GNU/Linux >> Linux の 問題 >  >> Linux

古いバージョンの libstdc++ とのリンク

別のライブラリにリンクする必要はありません。古いバージョンのコンパイラを使用する必要があります。

GNU ABI ポリシーを見てください。 libstdc++ 共有ライブラリは、前方互換性を持つように設計されています。つまり6.0.8 が必要な場合は、バージョン 6.0.10 を使用できます。ポリシーでは、gcc-4.2.0 以降では 6.0.9 が必要であるため、gcc-4.1.x が必要であると読むことができます。

つまり、システムに libstdc++.so.6.0.x が 1 つしかないのはそのためです。必要なのは最新のものだけです。

特定のバージョンのコンパイラのみを使用するようにビルド システムをセットアップする場合:標準の g++ が使用できないことを確認し (リンクの名前を変更し、それを提供するパッケージを削除し、PATH から削除します)、掘り下げを開始します。私のために働いた.


必要な共有ライブラリを独自のコード (たとえば、サブディレクトリ内) に同梱し、LD_LIBRARY_PATH を設定して、アプリケーションを実行する前に、そのディレクトリを最初に検索することができます。

必要な特定のバージョンを出荷するということは、ユーザーがどのバージョンをインストールしたかは関係ありません。すべての依存関係も確実に出荷する必要があります。


Linux
  1. エンタープライズLinuxでのセキュリティ監査の存続

  2. .so ファイル内の古いシンボル バージョンへのリンク

  3. ldconfig エラー:シンボリック リンクではありません

  1. Linuxで古い親戚をオンラインにするための4つのヒント

  2. 通信リンク障害の例外–MySQLを使用したWSO2[修正]

  3. ubuntu 18.10宇宙バージョンでのapt更新エラー

  1. Dpkgでカーネルアップデートをブロックしますか?

  2. 古いバージョンのLibreofficeを使用しますか?

  3. dlopen/dlsym で使用すると、dynamic_cast が失敗する