Intel® C++ Compiler
Community support and assistance for creating C++ code that runs on platforms based on Intel® processors.

What is .icc_env.cfg (and .icpc_env.cfg) ?

Yang__Richard
Beginner
1,009 Views

Using the following command:

grep -F env.cfg <(strace -feopenat icpc 2>&1) <(strace -feopenat icc 2>&1)

I get 

/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?

0 Kudos
5 Replies
Yang__Richard
Beginner
1,009 Views

Is this not documented? I cant seem to find any information on the files--in particular the syntax it requires or follows.

0 Kudos
Yang__Richard
Beginner
1,009 Views

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.:

install: /usr/lib/gcc/x86_64-linux-gnu/8/

programs: /usr/lib/gcc/x86_64-linux-gnu/8:/usr/lib/gcc/x86_64-linux-gnu:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/x86_64-linux-gnu/bin/x86_64-linux-gnu/8:/usr/x86_64-linux-gnu/bin/x86_64-linux-gnu:/usr/x86_64-linux-gnu/bin/


libraries: /opt/intel/compilers_and_libraries_2019.1.144/linux/tbb/lib/intel64_lin/gcc4.7:/opt/intel/compilers_and_libraries_2019.1.144/linux/mpi/intel64/libfabric/lib:/usr/lib/gcc/x86_64-linux-gnu/8:/usr/lib/x86_64-linux-gnu:/usr/lib:/lib/x86_64-linux-gnu:/lib

#gcc version 8.2.0 (Debian 8.2.0-9)

0 Kudos
Yang__Richard
Beginner
1,009 Views

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"
  #include <stdio.h>
                    ^
 

Probably has something to do with the environment not being set correctly (the obvious guess, really)?

 

0 Kudos
Yang__Richard
Beginner
1,009 Views

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:

    --sys_include \
    /usr/local/include \
    --sys_include \
    /usr/lib/gcc/x86_64-linux-gnu/8/include \
    --sys_include \
    /usr/lib/gcc/x86_64-linux-gnu/8/include-fixed \
    --sys_include \
    /usr/include/ \
    --sys_include \
    /usr/include \
    --sys_include \
    /usr/include/x86_64-linux-gnu \

The question is, how does one include this information in icc_env.cfg?

0 Kudos
Yang__Richard
Beginner
1,009 Views

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.

 

0 Kudos
Reply