32-bit compile (... replacing identifier __suseconds_t)

Does anyone know of a workaround to the below pgcc error? pgcc does not seem to like my stdlib.h header file.

$ pgcc -tp=px-32 -c foo.c
NOTE: your trial license will expire in 9 days, 6.79 hours.
PGC-S-0035-Syntax error: Recovery attempted by replacing identifier __suseconds_t by typedef id .Z0000 (/usr/include/bits/time.h: 72)
PGC-S-0040-Illegal use of symbol, __suseconds_t (/usr/include/sys/select.h: 49)
PGC-W-0156-Type not specified, 'int' assumed (/usr/include/sys/select.h: 49)
PGC-W-0114-More than one type specified (/usr/include/sys/select.h: 55)
PGC-W-0143-Useless typedef declaration (no declarators present) (/usr/include/sys/select.h: 55)
PGC/x86 Linux 8.0-3: compilation completed with severe errors
$ cat foo.c
#include <stdlib.h>

I do not see the issue using a 64-bit -tp flag.

$ uname -a
Linux ... 2.6.5-7.308-smp #1 SMP Mon Dec 10 11:36:40 UTC 2007 x86_64 x86_64 x86_64 GNU/Linux
$ cat /etc/SuSE-release
SUSE LINUX Enterprise Server 9 (x86_64)
VERSION = 9
PATCHLEVEL = 4

Thanks,
Ethan

Hi Ethan,

This usually means that the 32-bit compilers weren’t properly installed. Try reinstalling and note any errors. Make sure you have the SLES 32-bit compatibility library installed before installing the PGI compilers. These libraries are often not part of a standard OS installation so need to be explicitly added.

  • Mat

I’m able to compile 32-bit with other compiles (GNU and Sun Studio). Is there a way to sanity check my installation? The installer did not indicate any errors. What is the SLES 32-bit compatibility library?

Hi Ethan,

I don’t know the specific packages for your system, but if “gcc -m32” compiles, then you should have 32-bit libraries installed.

Can you try re-installing and note any errors that are emitted?

Thanks,
Mat

Re-installing the PGI compilers seemed to do the trick. Thanks.

-Ethan