오랫동안 나를 괴롭히던 문제가 있습니다. 저는 경로 등을 포함한 라이브러리 경로에 대한 환경 변수를 설정하는 쉘 스크립트가 포함된 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)여야 한다고 가정/요구하지만아니요대시와 호환됩니다.