0

状況を説明しましょう。

システム g++ を使用して C++ ライブラリをコンパイルしました (Linux で)。次に、コンパイル済みライブラリの関数を呼び出す cython モジュールを構築しました。cython モジュールのビルドは、anaconada venv の下で行われました (ただし、venv 内に g++ はインストールされていません。したがって、cython はシステム gcc/g++ を使用していたに違いありません)。同じ anaconda venv の下で、cython モジュールをインポートすると、次のようなエラーが発生します。

anaconda3/envs/hspy/lib/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by ./libc_rd_halo.so).

システム g++ によってコンパイルされた c ライブラリ (libc_rd_halo.so) が anaconda g++ ライブラリを探しているようです。そして、anaconda venvにg ++がインストールされていません。


anaconda g++ を使用して c ライブラリを最初からコンパイルすることで問題を解決できます。cython モジュールを再度ビルドすると、モジュールをインポートできます。しかし、anaconda cython にシステム コンパイラを使用させ、モジュールのインポート時にシステム コンパイラ ライブラリを検索させたいと考えています。

私の質問は次のとおりです。

  1. anaconda cython がデフォルトでローカルの anaconda g++ を検索するのに、システム コンパイラは検索しないのはなぜですか? そうするメリットはありますか?

  2. anaconda cython でシステム コンパイラ ライブラリを探すにはどうすればよいですか?

4

1 に答える 1