Re: improper inclusion of LDFLAGS in topcomp.c
Daniel Diaz <[email protected]> Mon, 27 Apr 2009 15:25:18 +0200
| Newsgroups | gmane.comp.gnu.prolog.bugs |
|---|---|
| Message-ID | <[email protected]> |
Thank you for your detailed bug report. I'll see what I can do. Daniel Jean-François Mertens a écrit : > Hi, > > I have a build of ppl that fails with > >> gplc --c-compiler g++-4 -o ppl_gprolog \ >> ppl_gprolog.pl .libs/libppl_gprolog.a \ >> -L ' -g -O3 -fomit-frame-pointer -frounding-math -W >> -Wall -L../../../src/.libs -lppl -L../../../Watchdog/src/.libs -lpwl >> -lgmpxx -lgmp -lstdc++ -L/sw/lib/gcc4.4/lib -lgcc_s.1' >> g++-4: unrecognized option '-no-cpp-precomp' >> /usr/bin/ld: Undefined symbols: >> Parma_Polyhedra_Library::c_streambuf::sync() >> Parma_Polyhedra_Library::c_streambuf::uflow() >> Parma_Polyhedra_Library::c_streambuf::xsgetn(char*, int) >> Parma_Polyhedra_Library::c_streambuf::xsputn(char const*, int) >> Parma_Polyhedra_Library::c_streambuf::overflow(int) >> Parma_Polyhedra_Library::c_streambuf::pbackfail(int) >> Parma_Polyhedra_Library::c_streambuf::underflow() >> Parma_Polyhedra_Library::Linear_Expression::Linear_Expression(Parma_Polyhedra_Library::Variable, >> Parma_Polyhedra_Library::Variable) >> Parma_Polyhedra_Library::operator-(Parma_Polyhedra_Library::Linear_Expression >> const&, Parma_Polyhedra_Library::Variable) >> Parma_Polyhedra_Library::operator+(Parma_Polyhedra_Library::Variable, >> Parma_Polyhedra_Library::Variable) >> collect2: ld returned 1 exit status > > This could not have failed : "-L../../../src/.libs -lppl" is first > among the link flags, and that library contains those symbols. > > Re-running the same command manually, with -v added, gives the > explanation (there is an older version of libppl, not containing those > symbols, in /sw/lib) : >> /sw/bld/ppl-0.10.2-1/ppl-0.10.2/interfaces/Prolog/GNU# gplc >> --c-compiler g++-4 -o ppl_gprolog \ >> > ppl_gprolog.pl .libs/libppl_gprolog.a \ >> > -L ' -g -O3 -fomit-frame-pointer -frounding-math >> -W -Wall -L../../../src/.libs -lppl -L../../../Watchdog/src/.libs >> -lpwl -lgmpxx -lgmp -lstdc++ -L/sw/lib/gcc4.4/lib -lgcc_s.1 -v' >> Using built-in specs. >> g++-4: unrecognized option '-no-cpp-precomp' >> Target: powerpc-apple-darwin8 >> Configured with: ../gcc-4.4-20090407/configure --prefix=/sw >> --prefix=/sw/lib/gcc4.4 --mandir=/sw/share/man >> --infodir=/sw/share/info >> --enable-languages=c,c++,fortran,objc,java,obj-c++ --with-gmp=/sw >> --with-libiconv-prefix=/sw --with-ppl=/sw --with-cloog=/sw >> --with-system-zlib --x-includes=/usr/X11R6/include >> --x-libraries=/usr/X11R6/lib --disable-libjava-multilib >> --build=powerpc-apple-darwin8 --host=powerpc-apple-darwin8 >> --target=powerpc-apple-darwin8 >> Thread model: posix >> gcc version 4.4.0 20090407 (prerelease) (GCC) >> COMPILER_PATH=/Volumes/EXT_UFS/sw/lib/gcc4.4/bin/../libexec/gcc/powerpc-apple-darwin8/4.4.0/:/Volumes/EXT_UFS/sw/lib/gcc4.4/bin/../libexec/gcc/:/usr/libexec/gcc/powerpc-apple-darwin8/:/usr/lib/gcc/powerpc-apple-darwin8/ >> >> LIBRARY_PATH=/Volumes/EXT_UFS/sw/lib/gcc4.4/bin/../lib/gcc/powerpc-apple-darwin8/4.4.0/:/Volumes/EXT_UFS/sw/lib/gcc4.4/bin/../lib/gcc/:/Volumes/EXT_UFS/sw/lib/gcc4.4/bin/../lib/gcc/powerpc-apple-darwin8/4.4.0/../../../:/usr/lib/ >> >> COLLECT_GCC_OPTIONS='-mmacosx-version-min=10.4' '-mpowerpc' >> '-no-cpp-precomp' '-L/sw/lib' '-o' 'ppl_gprolog' '-g' '-O3' >> '-fomit-frame-pointer' '-frounding-math' '-W' '-Wall' >> '-L../../../src/.libs' '-L../../../Watchdog/src/.libs' >> '-L/sw/lib/gcc4.4/lib' '-v' '-shared-libgcc' >> /Volumes/EXT_UFS/sw/lib/gcc4.4/bin/../libexec/gcc/powerpc-apple-darwin8/4.4.0/collect2 >> -dynamic -arch ppc -macosx_version_min 10.4 -multiply_defined >> suppress -weak_reference_mismatches non-weak -o ppl_gprolog -lcrt1.o >> /Volumes/EXT_UFS/sw/lib/gcc4.4/bin/../lib/gcc/powerpc-apple-darwin8/4.4.0/crt3.o >> -L/sw/lib -L../../../src/.libs -L../../../Watchdog/src/.libs >> -L/sw/lib/gcc4.4/lib >> -L/Volumes/EXT_UFS/sw/lib/gcc4.4/bin/../lib/gcc/powerpc-apple-darwin8/4.4.0 >> -L/Volumes/EXT_UFS/sw/lib/gcc4.4/bin/../lib/gcc >> -L/Volumes/EXT_UFS/sw/lib/gcc4.4/bin/../lib/gcc/powerpc-apple-darwin8/4.4.0/../../.. >> /var/tmp/gplcd1XfTa.o .libs/libppl_gprolog.a -lppl -lpwl -lgmpxx >> -lgmp -lstdc++ -lgcc_s.1 /Volumes/EXT_UFS/sw/lib/all_pl_bips.o >> /Volumes/EXT_UFS/sw/lib/all_fd_bips.o >> /Volumes/EXT_UFS/sw/lib/top_level.o >> /Volumes/EXT_UFS/sw/lib/debugger.o >> /Volumes/EXT_UFS/sw/lib/libbips_fd.a >> /Volumes/EXT_UFS/sw/lib/libengine_fd.a >> /Volumes/EXT_UFS/sw/lib/libbips_pl.a >> /Volumes/EXT_UFS/sw/lib/libengine_pl.a >> /Volumes/EXT_UFS/sw/lib/liblinedit.a -lm -lstdc++ -lgcc_s.10.4 -lgcc >> -lSystemStubs -lSystem >> /usr/bin/ld: Undefined symbols: >> Parma_Polyhedra_Library::c_streambuf::sync() >> Parma_Polyhedra_Library::c_streambuf::uflow() >> Parma_Polyhedra_Library::c_streambuf::xsgetn(char*, int) >> Parma_Polyhedra_Library::c_streambuf::xsputn(char const*, int) >> Parma_Polyhedra_Library::c_streambuf::overflow(int) >> Parma_Polyhedra_Library::c_streambuf::pbackfail(int) >> Parma_Polyhedra_Library::c_streambuf::underflow() >> Parma_Polyhedra_Library::Linear_Expression::Linear_Expression(Parma_Polyhedra_Library::Variable, >> Parma_Polyhedra_Library::Variable) >> Parma_Polyhedra_Library::operator-(Parma_Polyhedra_Library::Linear_Expression >> const&, Parma_Polyhedra_Library::Variable) >> Parma_Polyhedra_Library::operator+(Parma_Polyhedra_Library::Variable, >> Parma_Polyhedra_Library::Variable) > > > : a flag '-L/sw/lib' is inserted, and right at the beginning in > addition! > This is clearly done by the gplc command, and looking in its builddir > seems to point to line 311 in topcomp.c .. > > If gplc needs to put some of gprolog's libraries on its compile commands, > I would suggest it does so explicitly, with their full path, > and don't put any '-L' flag. > > Jean-Francois Mertens > > > > _______________________________________________ > Bug-prolog mailing list > [email protected] > http://lists.gnu.org/mailman/listinfo/bug-prolog > -- Ce message a ete verifie par MailScanner pour des virus ou des polluriels et rien de suspect n'a ete trouve.