
長い間私を悩ませていた問題があります。私は、パスなどを含むライブラリパスの環境変数を設定するシェルスクリプトを含むIntel C ++コンパイラを使用しています。購入このスクリプトは、.bashrc
ターミナルチャームのように動作します。残念ながら環境変数が必要です数学そしてネットビンズC++これはまた、私が実行しているGUIプログラムがそれを認識できるようにIntelスクリプトを取得する方法に関する質問につながります。
Webを慎重に検索した結果、説明はありませんが、問題を発見したようです。 Gnomeの環境変数を設定する1つの方法は、*.sh
スクリプトを作成して/etc/profile.d/
から/etc/profile
。
それにもかかわらず、この情報これはお勧めできません。いくつかの設定/etc/profile
だけでなく、ソースコードをインポートする必要があるシェルスクリプトがあることに注意してください。export VAR=blub
たとえば、スクリプトを使用してこれを実行すると、ファイル全体mklvars.sh
をインポートできないようです。私が意味するものを説明するために、ファイルの一部をインポートします。
#! /bin/sh
#
# Copyright (C)
# ...lot of boring stuff
CPRO_PATH=/opt/intel/composer_xe_2013_sp1.0.080
export MKLROOT=${CPRO_PATH}/mkl
SCRIPT_NAME=$0
MOD_NAME=mod
# .... some more code here ...
if [ -z "${MKL_TARGET_ARCH}" ] ; then
echo
echo "ERROR: architecture is not defined. Accepted values: ia32, intel64, mic"
mkl_help
else
if [ -n "${LD_LIBRARY_PATH}" ] ; then OLD_LD_LIBRARY_PATH=":${LD_LIBRARY_PATH}"; fi
export LD_LIBRARY_PATH="${CPRO_PATH}/compiler/lib/${MKL_TARGET_ARCH}: #.....
今すぐサインアウトしてから再度ログインすると、変数は定義されましたが調整MKLROOT
さLD_LIBRARY_PATH
れませんでした。export VAR
.netファイルをソーシングするときに単純なものよりも複雑なものはスキップするようです.profile
。
質問:X-Sessionのコンパイラ変数スクリプト(私の場合はGnome)を取得する便利な方法はありますか?ここで何が起こっているのか知っている人はいますか?
この問題を解決するための確実な方法は、スクリプトを手動でインポートしてグローバルファイルに配置することですprofile
。この方法の欠点は、コンパイラを更新するたびにこの操作を繰り返すことです。
段階的に
私が完全に狂ったわけではないことがわかるように、段階的にお見せしましょう。こういうわけで私は入れた数学カーネルライブラリスクリプトPastebinでは、次から始めます。
- 私は任意のファイルや他のファイルから
bashrc
スクリプトを取得できませんprofile
。 - ログアウトしてもう一度ログインしました。
$MKLROOT
テストのためとを見てみましょう$LD_LIBRARY_PATH
。どちらもスクリプトによって変更する必要があります。現在の値を確認するときに設定されていません。
echo $LD_LIBRARY_PATH
echo $MKLROOT
ファイルを手動で取得すると、次のような結果が得られます。
source /opt/intel/composer_xe_2013_sp1.0.080/mkl/bin/mklvars.sh intel64
echo $MKLROOT
echo $LD_LIBRARY_PATH
# Output:
# /opt/intel/composer_xe_2013_sp1.0.080/mkl
# opt/intel/composer_xe_2013_sp1.0.080/compiler/lib/intel64:/opt/intel/composer_xe_2013_sp1.0.080/mkl/lib/intel64
source
この行を端末に配置して~/.bashrc
新しい端末を開くと、上記のように両方の変数が正しく設定されます。これで、source
行を削除~/.bashrc
して保存/etc/profile.d/intelCC.sh
し、ログアウト/ログインします。
ログイン後、変数は設定されていませんが、私の引数~/.xsession-errors
にエラーメッセージが表示されます。
/usr/sbin/lightdm-session: 1: /etc/profile.d/intelCC.sh: source: not found
今、私はこのようなsource
単純な代替品を使って今を含めます。.
/etc/profile.d/intelCC.sh
. /opt/intel/composer_xe_2013_sp1.0.080/mkl/bin/mklvars.sh intel64
再び同じです。保存してログアウトしてログインします。現在.xsession-errors
これに関連するエラーはないようです。最後に、次のようになります。
echo $MKLROOT
# /opt/intel/composer_xe_2013_sp1.0.080/mkl
echo $LD_LIBRARY_PATH
# empty
答え1
MKL_TARGET_ARCHが設定されていることを確認してください。
/etc/profile.d
ディレクトリに追加すると、変数が$MKL_TARGET_ARCH
まだ設定されていない可能性があるため、デフォルトでif/else
はブロック全体をスキップします。
$MKL_TARGET_ARCH
このステートメントの上記の内容を一時的に設定してこの理論をテストし、再度ログインして機能することをif/else
確認できます。
MKL_TARGET_ARCH="..something.."
if [ -z "${MKL_TARGET_ARCH}" ] ; then
インテル・コンパイラーのインストール
私はこのコンパイラを所有していないので、正確な詳細を知ることはできません。しかし、私は15年以上にわたってエンジニアリングアプリケーションを設定してきたので、この分野についてある程度の知識を持っています。
それにもかかわらず、この種のツールをインストールするときは、通常、独自の環境ファイルを作成または提供する必要があります。 Intel Fortranコンパイラに関するこの記事を見つけましたが、製品がこのように異なる場合は驚きます。
この文書を参照すると、インストールinstall.sh
後にファイルがコピーされる手順()がわかります/etc/profile.d
。このファイルには、実行する必要がある環境設定が含まれています。
cp /opt/intel/Compiler/11.1/056/bin/ia32/iccvars_ia32.sh /etc/profile.d/
この製品にも同様の手順が必要なようです。このページの展開固有の手順を使用して、インストールが完了したことを再確認してください。
最後の解決策
.
うまくいきますが、うまくいかない場合は、source
おそらくBashではなくBourneシェルを扱っています。 Bashはどちらもサポートしていますが、Bourneシェル(/bin/sh
)はサポートしていません。
見たら本書ではそうすれば、これがあなたの問題のように見えるでしょう。
Ubuntu 12.0xでは、/bin/shへのリンクを/bin/bashから/bin/dashに変更します。 13.0.0.079用のIntelインストールスクリプトは/ bin / shを参照しますが、これはbourneまたはbash(shまたはbash)でなければならないと仮定/要求しますが、いいえダッシュと互換性があります。