I’ve completed a network install of PGI OpenACCToolkit2015, and executed the makelocalrc script on a development machine, but the resulting environment is unable to find stddef.h when compiling any program.
The network install was done to a shared (read only, cvmfs) file system. From a development machine makelocalrc was then run with:
Full contents of the makelocalrc generated file for this development machine:
$cat localrc.linux-wc5v
set LDSO=/lib64/ld-linux-x86-64.so.2;
set GCCDIR=/usr/lib64/gcc/x86_64-suse-linux/4.8;
set GPPDIR32= /usr/include/c++/4.8 /usr/include/c++/4.8/x86_64-suse-linux/32 /usr/include/c++/4.8/backward /usr/lib64/gcc/x86_64-suse-linux/4.8/include /usr/local/include /usr/lib64/gcc/x86_64-suse-linux/4.8/include-fixed /usr/lib64/gcc/x86_64-suse-linux/4.8/…/…/…/…/x86_64-suse-linux/include /usr/include In file included from /usr/include/features.h:402:0, from /usr/include/stdio.h:27, /usr/include/gnu/stubs.h:7:27: fatal error: gnu/stubs-32.h: No such file or directory # include <gnu/stubs-32.h>;
set GPPDIR64= /usr/include/c++/4.8 /usr/include/c++/4.8/x86_64-suse-linux /usr/include/c++/4.8/backward /usr/lib64/gcc/x86_64-suse-linux/4.8/include /usr/local/include /usr/lib64/gcc/x86_64-suse-linux/4.8/include-fixed /usr/lib64/gcc/x86_64-suse-linux/4.8/…/…/…/…/x86_64-suse-linux/include /usr/include;
set GCCINC32= /usr/lib64/gcc/x86_64-suse-linux/4.8/include /usr/local/include /usr/lib64/gcc/x86_64-suse-linux/4.8/include-fixed /usr/lib64/gcc/x86_64-suse-linux/4.8/…/…/…/…/x86_64-suse-linux/include /usr/include In file included from /usr/include/features.h:402:0, from /usr/include/stdio.h:27, /usr/include/gnu/stubs.h:7:27: fatal error: gnu/stubs-32.h: No such file or directory # include <gnu/stubs-32.h>;
set GCCINC64= /usr/lib64/gcc/x86_64-suse-linux/4.8/include /usr/local/include /usr/lib64/gcc/x86_64-suse-linux/4.8/include-fixed /usr/lib64/gcc/x86_64-suse-linux/4.8/…/…/…/…/x86_64-suse-linux/include /usr/include;
set G77DIR=“”;
set OEM_INFO=64-bit target on x86-64 Linux $INFOTPVAL;
set GCCINC= /usr/lib64/gcc/x86_64-suse-linux/4.8/include /usr/local/include /usr/lib64/gcc/x86_64-suse-linux/4.8/include-fixed /usr/lib64/gcc/x86_64-suse-linux/4.8/…/…/…/…/x86_64-suse-linux/include /usr/include;
set GPPDIR= /usr/include/c++/4.8 /usr/include/c++/4.8/x86_64-suse-linux /usr/include/c++/4.8/backward /usr/lib64/gcc/x86_64-suse-linux/4.8/include /usr/local/include /usr/lib64/gcc/x86_64-suse-linux/4.8/include-fixed /usr/x86_64-suse-linux/include /usr/include;
set LOCALRC=YES;
set THROW=__THROW=;
set EXTENSION=extension=;
set COMPGLIBLFDIR=;
set COMPGCCINCDIR=include-gcc48;
Next Line gives error
set LC=$if(-Bstatic,-lgcc -lgcc_eh -lc -lgcc -lgcc_eh -lc, -lgcc -lc -lgcc);
GLIBC version 2.19
GCC version 4.8
set GCCVERSION=40801;
set LOCALDEFS=STDC_HOSTED;
set LOCALCOMPLIB=/usr/pgi/shared/15.7/lib64;
export PGI=$COMPBASE;
makelocalrc executed by tenzing Sat Sep 12 06:15:05
When you chose a network install in 15.7, you said the commonly
named local directory is
/usr/pgi/shared/15.7
I suggest that that is not local on each platform.
If you create a file ‘foo.txt’ on platform A in /usr/pgi/shared/15.7,
do you see that file when you login on platform B?
You should not.
/usr/pgi I assume is a commonly mounted directory where
PGI compilers are installed for all hosts to use.
With 15.7, the installer now creates ‘add_network_host’
Pick a directory you can create on every network target,
that has the same name, but is local to that target.
I use /local/home/myname/15.7/share_objects when
I installed on A, for the commonly named local directory
When I wish to now install on B, all I do is
export PGI=/usr/pgi
export PATH=$PGI/linux86-64/15.7/bin:$PATH
and then I run
add_network_host
which will then create
/local/home/myname/15.7/share_objects
on B, and then will run makelocalrc to create localrc.B
What goes into /local/home/myname/15.7/share_objects?
Header files unique to the Linux version on B, like stddef.h.
I di not realize you had an OTK license. It is only good for one machine to
compile and run on.
So either you have a program that does not compile with gcc,
and you wish it to compile with pgcc (which will fail), or you
are using a different gcc than the one you installed pgcc with,
and the failure comes from pgcc, but not the new gcc.
I have seen a number of posts where the clang version of gcc failed to
include stddef.h, and a follow-up release fixed that,