Using the following command:
grep -F env.cfg <(strace -feopenat icpc 2>&1) <(strace -feopenat icc 2>&1)
/proc/self/fd/11:[pid 17115] openat(AT_FDCWD, "/opt/intel/compilers_and_libraries_2019.1.144/linux/bin/intel64/.icpc_env.cfg", O_RDONLY) = -1 ENOENT (No such file or directory)
/proc/self/fd/15:[pid 17116] openat(AT_FDCWD, "/opt/intel/compilers_and_libraries_2019.1.144/linux/bin/intel64/.icc_env.cfg", O_RDONLY) = -1 ENOENT (No such file or directory)
What is this ".ic
c_env.cfg" file that is trying to be read? What can I put in it?
- Development Tools
- Intel® C++ Compiler
- Intel® Parallel Studio XE
- Intel® System Studio
- Parallel Computing
Using strace i've managed to figure out that this at least works--I don't know why or how or what but icc needs at least this in icc_env.cfg if it exists.:
#gcc version 8.2.0 (Debian 8.2.0-9)
Actually, scratch that --
It appears the c compiler no longer works with an .icc_env.cfg (with those settings). An empty .icc_env.cfg also definitely doesn't work.
conftest.c(9): catastrophic error: cannot open source file "stdio.h"
Probably has something to do with the environment not being set correctly (the obvious guess, really)?
So from using the -watch=all option, I've found a difference in the mcpcom command used when compiling a dummy #include<stdio.h> file. It appears that the .icc_env.cfg results in the removal of these parameters:
The question is, how does one include this information in icc_env.cfg?
Honestly don't get why I can't find anything on these files, nor why I'm not getting any responses.
With (random?) manipulation of .icc_env.cfg/.icpc_env.cfg,
I can get/resolve errors like:
gcc: error #10417: Problem setting up the Intel(R) Compiler compilation environment. Requires 'install path' setting gathered from x86_64-linux-gnu-gcc.intel
Discovered the need for .icc_env.cfg when I was trying to 'force' a symlink (indirectly) between icc and gcc.
The x86_64-linux-gnu-gcc.intel mentioned above is a symlink in '/opt/intel/compilers_and_libraries/linux/pkg_bin/intel64/' pointing to /usr/bin/x86_64-linux-gnu-gcc-8, and I have gcc-name set to gcc.intel and gnu-prefix set to x86_64-linux-gnu-.
Ultimately I'm trying to 'hide' gcc from access (other than through the actual binary, which is /usr/bin/x86_64-linux-gnu-gcc-8), so that any program trying to access gcc/g++ instead accesses icc/icpc.