段階的に

段階的に

長い間私を悩ませていた問題があります。私は、パスなどを含むライブラリパスの環境変数を設定するシェルスクリプトを含む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}: #.....

今すぐサインアウトしてから再度ログインすると、変数は定義されましたが調整MKLROOTLD_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)でなければならないと仮定/要求しますが、いいえダッシュと互換性があります。

おすすめ記事