对不起,如果这是一个非常愚蠢的菜鸟问题,但我不是专家,我在这个或其他论坛上找不到任何足够的回应。
我正在运行 Ubuntu 18.04 x64,并且正在使用英特尔编译器。为了使我的系统和我的软件编译保持一致,我设置了我的 .bashrc 以将 Intel 编译器设置为默认值。
source /opt/intel/parallel_studio_xe_2018.2.046/bin/psxevars.sh
export CC='/opt/intel/bin/icc'
export CXX='/opt/intel/bin/icpc'
export FC='/opt/intel/bin/ifort'
export F77='/opt/intel/bin/ifort'
export CFLAGS='-O3 -xHost -ip'
export CXXFLAGS='-O3 -xHost -ip'
export FCFLAGS='-O3 -xHost -ip'
现在,如果我这样做,我将无法启动 MATLAB R2017b。每次我启动它时,它都会与英特尔编译器发生冲突,并因错误而中止启动:
symbol lookup error: /opt/intel/compilers_and_libraries_2018.2.199/linux/compiler/lib/intel64/libirng.so: undefined symbol: __intel_skx_avx512_memcpy
我必须让 MATLAB 工作的唯一方法是在我的 .bashrc 文件中注释掉上述变量,获取它并启动 MATLAB。
这当然很疯狂,我想知道是否有可能实际上有一个忽略 .bashrc 的 .desktop 文件,或者是否有任何其他方法可以让这些环境变量启动并运行,但让软件忽略它们。
谢谢!
确实可以从
bash
忽略~/.bashrc
文件开始。具体来说,通过--no-rc
标志:.desktop
您可以通过一种相当简单的方式为此制作一个包装文件:或者,您可以
~/.bashrc
以这种方式修改它,这将允许您动态地采购它。例如,我个人会做这样的事情:它的作用是检查环境变量
no_intell_compilers
;如果未设置或设置为false
,~/.bashrc
将导出这些变量。当您想在环境中没有这些变量的情况下重新开始时,请执行在该 shell 中完成开发后,只需
unset no_intell_compilers
再次获取文件以获取变量。这并不能完全回答您关于忽略的问题,
.bashrc
但我认为这可能是一个合理的选择:从您的开发中删除所需的语句
~/.bashrc
并将它们放在单独的文件中,例如~/dev-env
:然后,当您想使用
icc
编译器开发某些东西时,只需在受影响的终端窗口中手动获取该文件:该文件不需要是可执行的,因为您不会执行它而是源它。这意味着其中的语句由当前 shell处理,因此会影响当前 shell。如果你让它可执行然后执行它,就会产生一个子shell,在那里设置设置,然后子shell会关闭。不是你想要的。