>>>> bad news indeed. I've worked around this and got a build to succeed using
>>>>
>>>> LDFLAGS="-Wl,--no-as-needed"
>>>>
>>>> which seems to restore the old behaviour, but it looks like the real
>>>> solution is one we've been avoiding for some years now, namely to
>>>> identify
>>>> all the shared libraries that are necessary to resolve the symbols when
>>>> linking a shared library, so that each library ends up with links to the
>>>> libraries it depends on (this is the reason why the Cygwin build stopped
>>>> working).
Finally decided to take a crack at getting starlink to build again with
Ubuntu 11.10 (32bit machine) using the recent patches and the LDFLAGS that
you recommend. It does seem to get further than I recall, but still dies
during "make configure-deps" on Perl:
CCCMD = gcc -DPERL_CORE -c -DDEBUGGING -fno-strict-aliasing
-pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE
-D_FILE_OFFSET_BITS=64 -std=c89 -g -O2 -Wall -ansi -W -Wextra
-Wdeclaration-after-statement -Wendif-labels -Wc++-compat
pp.o: In function `Perl_pp_pow':
/home/echapin/starlink/thirdparty/perlsys/perl/perl/pp.c:1106: undefined
reference to `pow'
pp.o: In function `Perl_pp_modulo':
/home/echapin/starlink/thirdparty/perlsys/perl/perl/pp.c:1449: undefined
reference to `floor'
/home/echapin/starlink/thirdparty/perlsys/perl/perl/pp.c:1452: undefined
reference to `floor'
/home/echapin/starlink/thirdparty/perlsys/perl/perl/pp.c:1465: undefined
reference to `fmod'
pp.o: In function `Perl_pp_atan2':
/home/echapin/starlink/thirdparty/perlsys/perl/perl/pp.c:2824: undefined
reference to `atan2'
pp.o: In function `Perl_pp_sin':
/home/echapin/starlink/thirdparty/perlsys/perl/perl/pp.c:2837: undefined
reference to `sin'
pp.o: In function `Perl_pp_int':
/home/echapin/starlink/thirdparty/perlsys/perl/perl/pp.c:2942: undefined
reference to `floor'
/home/echapin/starlink/thirdparty/perlsys/perl/perl/pp.c:2949: undefined
reference to `ceil'
pp.o:(.rodata+0x4d0): undefined reference to `cos'
pp.o:(.rodata+0x4d4): undefined reference to `sin'
pp.o:(.rodata+0x4d8): undefined reference to `sin'
pp.o:(.rodata+0x4dc): undefined reference to `exp'
pp.o:(.rodata+0x4e0): undefined reference to `log'
pp.o:(.rodata+0x4e4): undefined reference to `sqrt'
pp_sys.o: In function `S_gmtime64_r':
/home/echapin/starlink/thirdparty/perlsys/perl/perl/time64.c:375:
undefined reference to `ceil'
/home/echapin/starlink/thirdparty/perlsys/perl/perl/time64.c:377:
undefined reference to `ceil'
/home/echapin/starlink/thirdparty/perlsys/perl/perl/time64.c:379:
undefined reference to `ceil'
/home/echapin/starlink/thirdparty/perlsys/perl/perl/time64.c:398:
undefined reference to `floor'
/home/echapin/starlink/thirdparty/perlsys/perl/perl/time64.c:422:
undefined reference to `ceil'
/home/echapin/starlink/thirdparty/perlsys/perl/perl/time64.c:379:
undefined reference to `floor'
/home/echapin/starlink/thirdparty/perlsys/perl/perl/time64.c:377:
undefined reference to `floor'
/home/echapin/starlink/thirdparty/perlsys/perl/perl/time64.c:375:
undefined reference to `floor'
/home/echapin/starlink/thirdparty/perlsys/perl/perl/time64.c:374:
undefined reference to `fmod'
/home/echapin/starlink/thirdparty/perlsys/perl/perl/time64.c:386:
undefined reference to `fmod'
/home/echapin/starlink/thirdparty/perlsys/perl/perl/time64.c:378:
undefined reference to `fmod'
/home/echapin/starlink/thirdparty/perlsys/perl/perl/time64.c:376:
undefined reference to `fmod'
pp_sys.o: In function `Perl_pp_gmtime':
/home/echapin/starlink/thirdparty/perlsys/perl/perl/pp_sys.c:4527:
undefined reference to `floor'
/home/echapin/starlink/thirdparty/perlsys/perl/perl/pp_sys.c:4527:
undefined reference to `floor'
pp_pack.o: In function `S_pack_rec':
/home/echapin/starlink/thirdparty/perlsys/perl/perl/pp_pack.c:3374:
undefined reference to `floor'
/home/echapin/starlink/thirdparty/perlsys/perl/perl/pp_pack.c:3376:
undefined reference to `floor'
/home/echapin/starlink/thirdparty/perlsys/perl/perl/pp_pack.c:3376:
undefined reference to `floor'
collect2: ld returned 1 exit status
make[2]: *** [miniperl] Error 1
make[1]: *** [all] Error 2
make: *** [/stardev/manifests/perl] Error 1
So, I added "-lm" to LDFLAGS and re-configured Perl... that got me a
little further:
Processing hints file hints/linux.pl
Note (probably harmless): No library found for -lm
Note (probably harmless): No library found for -lposix
Note (probably harmless): No library found for -lcposix
Can't locate auto/POSIX/autosplit.ix in @INC (@INC contains: ../../lib
../../lib ../../cpan/AutoLoader/lib ../../cpan/Cwd ../../cpan/Cwd/lib
../../cpan/ExtUtils-Command/lib ../../dist/ExtUtils-Install/lib
../../cpan/ExtUtils-MakeMaker/lib ../../cpan/ExtUtils-Manifest/lib
../../cpan/File-Path/lib ../../lib .) at ../../lib/AutoLoader.pm line 173.
at POSIX.pm line 9
POSIX.xs: In function ¡XS_POSIX_WEXITSTATUS¢:
POSIX.xs:939:6: warning: format ¡%d¢ expects argument of type ¡int¢, but
argument 2 has type ¡I32¢ [-Wformat]
sdbm.c: In function ¡makroom¢:
sdbm.c:371:2: warning: ignoring return value of ¡write¢, declared with
attribute warn_unused_result [-Wunused-result]
Processing hints file hints/linux.pl
Storable.xs: In function ¡store_hash¢:
Storable.xs:2360:5: warning: format ¡%d¢ expects argument of type ¡int¢,
but argument 3 has type ¡I32¢ [-Wformat]
Storable.xs:2360:5: warning: format ¡%d¢ expects argument of type ¡int¢,
but argument 4 has type ¡I32¢ [-Wformat]
Please specify prototyping behavior for Hostname.xs (see perlxs manual)
Processing hints file hints/linux.pl
Note (probably harmless): No library found for -lrt
Making header files for XS...
Processing hints file hints/linux.pl
Processing hints file hints/linux.pl
lib/auto/Time/HiRes/HiRes.a(HiRes.o): In function
`XS_Time__HiRes_clock_nanosleep':
/home/echapin/starlink/thirdparty/perlsys/perl/perl/cpan/Time-HiRes/HiRes.xs:1179:
undefined reference to `clock_nanosleep'
lib/auto/Time/HiRes/HiRes.a(HiRes.o): In function
`XS_Time__HiRes_clock_getres':
/home/echapin/starlink/thirdparty/perlsys/perl/perl/cpan/Time-HiRes/HiRes.xs:1147:
undefined reference to `clock_getres'
lib/auto/Time/HiRes/HiRes.a(HiRes.o): In function
`XS_Time__HiRes_clock_gettime':
/home/echapin/starlink/thirdparty/perlsys/perl/perl/cpan/Time-HiRes/HiRes.xs:1117:
undefined reference to `clock_gettime'
collect2: ld returned 1 exit status
make[2]: *** [perl] Error 1
make[1]: *** [all] Error 2
make: *** [/stardev/manifests/perl] Error 1
Time for bed.
Ed
|