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