단계별로

단계별로

오랫동안 나를 괴롭히던 문제가 있습니다. 저는 경로 등을 포함한 라이브러리 경로에 대한 환경 변수를 설정하는 쉘 스크립트가 포함된 Intel C++ 컴파일러를 사용하고 있습니다.구입이 스크립트는 .bashrc터미널 매력처럼 작동합니다. 불행히도 환경 변수가 필요합니다수학그리고넷빈즈 C++이것은 또한 내가 실행하는 GUI 프로그램이 이를 인식할 수 있도록 Intel 스크립트를 얻는 방법에 대한 질문으로 이어집니다.

웹을 주의 깊게 검색한 결과 설명이 없지만 문제를 발견한 것 같습니다. Gnome의 환경 변수를 설정하는 한 가지 방법은 *.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)여야 한다고 가정/요구하지만아니요대시와 호환됩니다.

관련 정보