Date: Wed, 19 Jun 2002 15:58:11 +1000 From: Lachlan O'Dea <odela01@ca.com> To: current@FreeBSD.ORG Cc: Charlie Root <root@aldan.algebra.com> Subject: Re: C++ troubles continue Message-ID: <3D101D73.607@ca.com> References: <200206190212.g5J2CJ6q093342@aldan.algebra.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Charlie Root wrote:
> Trying to build kdebase3 on the
> FreeBSD 5.0-CURRENT #7: Mon Jun 17 22:46:16 EDT 2002
>
> [...]
> gmake[4]: Nothing to be done for `all-am'.
> gmake[4]: Leaving directory `/ccd/ports/x11/kdebase3/work/kdebase-3.0.1/kappfinder/apps'
> gmake[3]: Leaving directory `/ccd/ports/x11/kdebase3/work/kdebase-3.0.1/kappfinder/apps'
> gmake[3]: Entering directory `/ccd/ports/x11/kdebase3/work/kdebase-3.0.1/kappfinder'
> /bin/sh ../libtool --mode=link --tag=CXX c++ -DNDEBUG -DNO_DEBUG -O2 -O -march=i686 -pipe -fno-exceptions -fno-check-new -DQT_CLEAN_NAMESPACE -DQT_NO_COMPAT -DQT_NO_ASCII_CAST -o kappfinder -L/opt/lib -pthread -L/opt/lib -R /opt/lib -R /opt/lib -R /opt/lib -R /opt/lib main.o scanner.o checker.o kappfinder_meta_unload.o -lkdeui
> c++ -DNDEBUG -DNO_DEBUG -O2 -O -march=i686 -pipe -fno-exceptions -fno-check-new -DQT_CLEAN_NAMESPACE -DQT_NO_COMPAT -DQT_NO_ASCII_CAST -o kappfinder -pthread main.o scanner.o checker.o kappfinder_meta_unload.o -L/opt/lib /opt/lib/libkdeui.so /opt/lib/libkdecore.so -L/usr/lib /opt/lib/libDCOP.so /opt/lib/libkdefx.so -lqt-mt -lpng -lz -lXext -lX11 -lSM -lICE -lXrender -lstdc++ -lm -lgcc -Wl,--rpath -Wl,/opt/lib -Wl,--rpath -Wl,/opt/lib
> checker.o: In function `checkDesktopFile(QString const&, QString)':
> checker.o(.text+0x536): undefined reference to `cout'
> checker.o(.text+0x543): undefined reference to `ostream::operator<<(char const*)'
> checker.o(.text+0x575): undefined reference to `ostream::operator<<(char const*)'
> checker.o(.text+0x585): undefined reference to `ostream::operator<<(char const*)'
> checker.o(.text+0x6f1): undefined reference to `cout'
> checker.o(.text+0x6fe): undefined reference to `ostream::operator<<(char const*)'
> checker.o(.text+0x706): undefined reference to `endl(ostream&)'
> checker.o(.text+0x7e1): undefined reference to `cout'
> checker.o(.text+0x7ea): undefined reference to `ostream::operator<<(char const*)'
> checker.o(.text+0x7f2): undefined reference to `endl(ostream&)'
> gmake[3]: *** [kappfinder] Error 1
> gmake[3]: Leaving directory `/ccd/ports/x11/kdebase3/work/kdebase-3.0.1/kappfinder'
> gmake[2]: *** [all-recursive] Error 1
> gmake[2]: Leaving directory `/ccd/ports/x11/kdebase3/work/kdebase-3.0.1/kappfinder'
> gmake[1]: *** [all-recursive] Error 1
> gmake[1]: Leaving directory `/ccd/ports/x11/kdebase3/work/kdebase-3.0.1'
> gmake: *** [all] Error 2
> *** Error code 2
>
> Any clues? The /usr/lib/libstdc++.a has, for example:
>
> 00000000 W std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)
> 00000000 B std::cout
> 00000000 B std::buf_cout
> U std::cout
> U std::buf_cout
I have the same problem exactly. All I could work out is that it's due
to checker.cpp including the old-fashioned iostream.h instead of
iostream. You can patch it to make it build easily enough...
--- checker.cpp.orig Wed Jun 19 15:49:04 2002
+++ checker.cpp Wed Jun 19 15:49:19 2002
@@ -20,7 +20,9 @@
#include <stdlib.h>
#include <string.h>
-#include <iostream.h>
+#include <iostream>
+
+using namespace std;
#include <qfile.h>
... but I doubt that's a good idea.
I haven't been able to find a library anywhere on my system that exports
the symbols I get when including iostream.h. Perhaps my -current build
is incomplete for some reason.
Here's an ultra-simple test case if it helps anyone:
fornost ~/tmp % cat test.cpp
#ifdef OLDE_STYLE
#include <iostream.h>
#else
#include <iostream>
using namespace std;
#endif
int main()
{
cout << "Hello, world." << endl;
return 0;
}
fornost ~/tmp % c++ -o test -Wall test.cpp
fornost ~/tmp % ./test
Hello, world.
fornost ~/tmp % c++ -o test -Wall -DOLDE_STYLE test.cpp
/var/tmp//ccjRtwx3.o: In function `main':
/var/tmp//ccjRtwx3.o(.text+0x14): undefined reference to `endl(ostream&)'
/var/tmp//ccjRtwx3.o(.text+0x21): undefined reference to `cout'
/var/tmp//ccjRtwx3.o(.text+0x26): undefined reference to
`ostream::operator<<(char const*)'
/var/tmp//ccjRtwx3.o(.text+0x2f): undefined reference to
`ostream::operator<<(ostream& (*)(ostream&))'
fornost ~/tmp % uname -a
FreeBSD fornost.ca.com 5.0-CURRENT FreeBSD 5.0-CURRENT #2: Wed Jun 12
18:39:45 EST 2002
odela01@fornost.ca.com:/usr/src/sys/i386/compile/FORNOST i386
--
Lachlan O'Dea <lodea@vet.com.au> Computer Associates Pty Ltd
Webmaster Vet - Anti-Virus Software
http://www.vet.com.au/
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3D101D73.607>
