私は最近GCCの古いバージョンをビルドし、それを私のホームディレクトリ(spec。~/local/gcc-5.3.0
)にインストールしました。しかし、私はこのコンパイラがCUDAプロジェクトのためだけに必要であり、システムコンパイラ(GCC 6.2.1)と一緒に作業する予定です。ですから、必要に応じて、これらの間を切り替えたり、ライブラリを変更したり、パスを適切に組み込んだりする方法を見つける必要があります。異なるGCCバージョン間の切り替え
私はupdate-alternatives
がこれを行う方法の1つであると理解しますが、私にはないroot権限が必要です。 、それは調整スイッチが行われるたびにシステムとローカルのgcc
間
各呼び出しスイッチ:
次善の策は、以下のことを保証する
.bashrc
でシェル関数を記述するかもしれませんローカルのgccが選択されたときに、それは最初に/usr/local/include
またはusr/local/lib
のようなシステムパスを調べる前にそれ自身でインストールされたヘッダファイルとライブラリを探します。以前のanswerでは、LD_LIBRARY_PATH
の変更は十分であるはずです。なぜなら、GCCのインストールでは、独自のヘッダファイルとスタティックライブラリがどこにあるかわかっているからです(正しいかどうかわからない、CPATH
などを変更する必要があると思っていました)。
上記を達成するための最良の方法はありますか?もしそうなら、そのような機能を実装する際にどのようなパスを設定すべきですか?
これに対する私の個人的なアプローチは非常に洗練されていません:私はちょうどCUDAビンdirとのマッチングを追加するシェルスクリプトを持っていますgcc binディレクトリを$ PATHにコピーします。実際には、さまざまなCUDAバージョンを保持するための複数のスクリプトがあります。 CUDAの使用をやめたり、別のバージョンに切り替える場合は、新しいシェルを開きます。 – tera
gccの 'bin'ディレクトリだけを' PATH'に追加することに言及します。インクルードディレクトリでなければ 'LD_LIBRARY_PATH'も変更する必要はありませんか? – rahul1210
nvccとgccの両方は、ライブラリの場所を知っているので、$ PATHを変更するだけで十分です。 – tera