Hi folks
I've been trying to compile SU R22..24 on a Debian 11 with gcc 10.2.1 (20210110), but there is an error.
make[4]: Entering directory '/usr/local/stow/su/src/su/main/filters' /usr/bin/gcc -I/usr/local/stow/su//include -g -m64 -Wno-long-long -DCWP_LITTLE_ENDIAN sulfaf.c -L/usr/local/stow/su//lib -lsu -lpar -lcwp -lm -o /usr/local/stow/su//bin/sulfaf */usr/bin/ld: /usr/local/stow/su//lib/libsu.a(fputgthr.o):/usr/local/stow/su/src/su/lib/fputgthr.c:51: multiple definition of `tr'; /usr/local/stow/su//lib/libsu.a(fgetgthr.o):/usr/local/stow/su/src/su/lib/fgetgthr.c:66: first defined here* collect2: error: ld returned 1 exit status make[4]: [Makefile:35: /usr/local/stow/su//bin/sulfaf] Error 1 (ignored) chmod: cannot access '/usr/local/stow/su//bin/sulfaf': No such file or directory
The source for this bug is that the global variable tr is defined in src/su/lib/fgetgthr.c as well as in src/su/lib/fputgthr.c. Both objects are combined to build libsu.a.
After a little googling, I found out that gcc 10.2 set -fnocommon as default now. So, adding -fcommon in Makefile.config fix the issue, but perhaps a better fix would be to place an extern across the multiple definitions of tr.
Kind regards, R.Biloti Applied Math. Department IMECC/UNICAMP
seisunix@mailman.seismic-unix.org