[GRASS5] GRASS and libc2.2/libc2.3 portability problem
Markus Neteler
neteler at itc.it
Sat Jan 10 17:44:18 EST 2004
It seems that I discovered a small (?) portability problem in GRASS 5.3/5.7:
- GRASS compiled on Redhat9/GLIBC_2.3 as network installation (NFS)
- using this GRASS binary on Redhat7/GLIBC_2.2 leads to an error:
baez:lib[264.8] ldd libgrass_gis.so
./libgrass_gis.so: /lib/libc.so.6: version `GLIBC_2.3' not found (required by ./libgrass_gis.so)
libgrass_datetime.so => /mpa_sw/ssi/BIO/software/GRASS5.3/grass5bin_cvs/grass53/lib/libgrass_datetime.so (0x40089000)
libz.so.1 => /usr/lib/libz.so.1 (0x40091000)
libm.so.6 => /lib/libm.so.6 (0x400ae000)
libc.so.6 => /lib/libc.so.6 (0x400d1000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000)
baez:lib[265.9] pwd
/mpa_sw/ssi/BIO/software/GRASS5.3/grass5bin_cvs/grass53/lib
baez:lib[266.10] ls -la /lib/libc.so.6
lrwxrwxrwx 1 root root 13 Jan 7 10:26 /lib/libc.so.6 -> libc-2.2.4.so
A quick web seach:
http://www.unidata.ucar.edu/projects/coohl/mhonarc/MailArchives/netcdf/msg04510.html
"> The problem is related to glibc. Anything on redhat9 with a glibc >=
> glibc-2.3.2-11.9 is causing the problems. Actually, any stock glibc
> from atleast 2.3.0 and on is causing problems.
>
> glibc is no longer exporting ctype_b.
> The offending line of code in netcdf is in libsrc/string.c.
> The line is:
> if(!isalnum(ch))
"
Now I checked libgis:
grep isalnum *.c
parser.c: if (!isalnum(*p) && !strchr(normal, *p))
A global search:
find . -type f -name "*.c" -exec grep -l isalnum {} \;
./src/mapdev/v.in.mif/main.c
./src/mapdev/v.out.e00/v.out.e00.c
./src/libes/gis/parser.c
./src/misc/m.in.e00/main.c
./src/raster/r.in.shape/main.c
./src/sites/s.in.dbf/dump.c
./src/sites/s.in.dbf/main.c
./src/sites/s.in.mif/main.c
./src/sites/s.in.shape/cmd/main.c
./src/sites/s.out.e00/s.out.e00.c
./src.contrib/SDTS/mapdev/v.in.sdts/dictionary.c
./src.garden/grass.postgresql/pg.in.dbf/pgdump.c
./src.garden/grass.postgresql/v.in.arc.pg/pgdump.c
./src.garden/grass.postgresql/v.in.shape.pg/main.c
In the mail above is suggestion to use (untested):
if(!isalnum((unsigned char)ch))
Certainly I prefer to leave this to an expert. Anything we
can do to avoid this portability problem?
Thanks,
Markus
More information about the grass-dev
mailing list