Ich habe keine Ahnung von C++ versuche hier für Jemanden die Kastanien aus dem Feuer zu holen in dem ich auf einem uralten BSD System versuche einen neueren Squid Proxy zu bauen. Mir schlagen aber das alte OS und die dafür verfügbaren Tools ins Genick. Ich habe hier die Quellen eines squid-3.5.28 auf einem FreeBSD 4.11 am Wickel und laufe auf folgendes Problem auf: ../../src/helper.h:134: error: base 'HelperServerBase' with only non-default constructor in class without a constructor Das ist Zeile 133 von helper.h: class helper_server : public HelperServerBase { public: MemBuf *wqueue; MemBuf *writebuf; helper *parent; Helper::Request **requests; private: CBDATA_CLASS2(helper_server); }; class helper_stateful_server : public HelperServerBase { public: /* MemBuf wqueue; */ /* MemBuf writebuf; */ statefulhelper *parent; Helper::Request *request; void *data; /* State data used by the calling routines */ private: CBDATA_CLASS2(helper_stateful_server); }; Der Bug ist im Netz bekannt, zu lesen gibts dazu das squid 3.x einen gcc4.x zum übersetzen erfordert, ich benutze hier gcc4.0 ..einen neueren gibt es nicht für FreeBSD4.11 ..jedenfalls nicht als package zum Download. Ich weiß das sich das mit einem gcc4.9 übersetzen läßt..mir hilft nur leider diese Information überhaupt nicht..weil eben kein neuerer Compiler verfügbar ist. Kann Jemand die Definition von HelperServerBase so ändern, das es der alte compiler hoffentlich löffelt? Vielen Dank im Vorraus..
Ich hab mal kurz reingeschaut. HelperServerBase hat überhaupt keine selbstdefinierten Konstruktoren, also müsste es da einen default-Konstruktor geben. Keine Ahnung, ob das ein bug in gcc 4.0 ist. Probier mal, in HelperServerBase den default-Konstruktor selber hinzuzufügen: Ein
1 | HelperServerBase (){} |
nach dem public: in Zeile 96 einfügen. Einfacher wäre es allerdings, du besorst dir einen aktuelleren gcc. Das sollte doch möglich sein. Oliver
:
Bearbeitet durch User
...wieso Zeile 96? das von mir gequotete fängt in Zeile 133 an, die Fehlermeldung erzählt was von 134.. sorry, ich habe wirklich keinen Plan davon. ..und Nein..es ist eben nicht möglich mit neuerem gcc, das System ist uralt, kommt mit gcc-2.95 als Standardcompiler im System, der gcc-4.0 ist das Neueste das zu finden war um es zusätzlich zu installieren.
Ok Oliver, Du hast Dich einfach mehr gekümmert als ich dachte :-) Ich habs getan und den Compiler angeworfen..dauert noch..
сорок две schrieb: > ...wieso Zeile 96? Weil die Fehlemeldung sagt, daß der Konstruktor in der Basisklasse fehlt, und die steht halt weiter vorne. Ich bleib aber bei der Aussage: Besorg dir eine neueren Compiler. Denn ich wette, daß aktuelle Problem mit dem gcc 4.0 wird nicht das einzige sein. Oliver
Du kannst da nicht mit mir wetten..weil ich der selben Meinung bin, ich habe nur die vorhergehenden Probleme erfolgreich vertreiben können. Jetzt knallt es wieder: depbase=`echo Reply.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||'`; /bin/sh ../../libtool --tag=CXX --mode=compile /usr/local/bin/c++40 -DHAVE_CONFIG_H -I../.. -I../../include -I../../lib -I../../src -I../../include -Wall -Wpointer-arith -Wwrite-strings -Wcomments -Wshadow -Woverloaded-virtual -Werror -pipe -D_REENTRANT -g -O2 -I/usr/local/include -MT Reply.lo -MD -MP -MF $depbase.Tpo -c -o Reply.lo Reply.cc && mv -f $depbase.Tpo $depbase.Plo libtool: compile: /usr/local/bin/c++40 -DHAVE_CONFIG_H -I../.. -I../../include -I../../lib -I../../src -I../../include -Wall -Wpointer-arith -Wwrite-strings -Wcomments -Wshadow -Woverloaded-virtual -Werror -pipe -D_REENTRANT -g -O2 -I/usr/local/include -MT Reply.lo -MD -MP -MF .deps/Reply.Tpo -c Reply.cc -o Reply.o ../../src/base/RefCount.h: In member function 'void RefCount<C>::dereference(const C*) [with C = Comm::Connection]': ../../src/base/RefCount.h:35: instantiated from 'RefCount<C>::~RefCount() [with C = Comm::Connection]' ../../src/helper.h:96: instantiated from here ../../src/base/RefCount.h:76: error: invalid use of undefined type 'const struct Comm::Connection' ../../src/comm/forward.h:20: error: forward declaration of 'const struct Comm::Connection' cc1plus: warnings being treated as errors ../../src/base/RefCount.h:77: warning: possible problem detected in invocation of delete operator: ../../src/base/RefCount.h:73: warning: 'tempP_' has incomplete type ../../src/comm/forward.h:20: warning: forward declaration of 'struct Comm::Connection' ../../src/base/RefCount.h:77: note: neither the destructor nor the class-specific operator delete will be called, even if they are declared when the class is defined. *** Error code 1 ..hat nicht viel Sinn. Ich werde versuchen den wirklich allerletzten möglichen Compiler auf dem Uropa-System zu bauen, das ist 4.3 aus den Ports. Wenn es dann nicht geht, gibts wohl simpel keine Lösung für das Problem. Ich melde mich..das wird ne Weile dauern.
https://www.pro-linux.de/artikel/1/74/freebsd-411-im-jahr-2017.html https://www.pro-linux.de/artikel/2/1897/8,compiler-von-uralt-zu-alt.html Der schafft immerhin einen 4.4.7 ;) Oliver
..danke ..das lese ich garantiert noch durch. Momentan fehlt mir allerdings etwas die Muße dazu. FreeBSD 4.11 war ein sehr gutes System, danach fing der Ärger an. IMHO ist das auch der Auskopplungspunkt von DragonFlyBSD, Matt Dillon hatte sich danach von FreeBSD getrennt. Gruß, Holm
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.