Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (GNU/Linux, *NIX, *BSD und Co) » const-Fehlermeldung bei make-Befehl

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
16.07.2019, 18:18 Uhr
hubach



Hallo zusammen

Um ein paar alte Devolo-dlan-Adapter zu betreiben, möchte ich die vom Hersteller angebotene Linux-Software installieren.

Weit bin ich nicht gekommen, den bereits mit dem make-Befehl erhalte ich eine ellenlange Fehlermeldung.

Hier ein Ausschnitt davon, der sich mehrfach wiederholt.


Zitat:

************************************************************************
In file included from /usr/include/x86_64-linux-gnu/c++/7/bits/c++allocator.h:33:0,
from /usr/include/c++/7/bits/allocator.h:46,
from /usr/include/c++/7/string:41,
from /usr/include/c++/7/bits/locale_classes.h:40,
from /usr/include/c++/7/bits/ios_base.h:41,
from /usr/include/c++/7/ios:42,
from /usr/include/c++/7/istream:38,
from /usr/include/c++/7/fstream:38,
from tools/dlanpasswd.cpp:7:
/usr/include/c++/7/ext/new_allocator.h: In instantiation of ‘void __gnu_cxx::new_allocator<_Tp>::construct(_Up*, _Args&& ...) [with _Up = HomePlugAvMMEs::ThunderNetworkInfoCommon::StationInfo; _Args = {const HomePlugAvMMEs::ThunderNetworkInfoV1::StaData&}; _Tp = std::_List_node<HomePlugAvMMEs::ThunderNetworkInfoCommon::StationInfo>]’:
/usr/include/c++/7/bits/alloc_traits.h:475:4: required from ‘static void std::allocator_traits<std::allocator<_CharT> >::construct(std::allocator_traits<std::allocator<_CharT> >::allocator_type&, _Up*, _Args&& ...) [with _Up = HomePlugAvMMEs::ThunderNetworkInfoCommon::StationInfo; _Args = {const HomePlugAvMMEs::ThunderNetworkInfoV1::StaData&}; _Tp = std::_List_node<HomePlugAvMMEs::ThunderNetworkInfoCommon::StationInfo>; std::allocator_traits<std::allocator<_CharT> >::allocator_type = std::allocator<std::_List_node<HomePlugAvMMEs::ThunderNetworkInfoCommon::StationInfo> >]’
/usr/include/c++/7/bits/stl_list.h:575:33: required from ‘std::__cxx11::list<_Tp, _Alloc>::_Node* std::__cxx11::list<_Tp, _Alloc>::_M_create_node(_Args&& ...) [with _Args = {const HomePlugAvMMEs::ThunderNetworkInfoV1::StaData&}; _Tp = HomePlugAvMMEs::ThunderNetworkInfoCommon::StationInfo; _Alloc = std::allocator<HomePlugAvMMEs::ThunderNetworkInfoCommon::StationInfo>; std::__cxx11::list<_Tp, _Alloc>::_Node = std::_List_node<HomePlugAvMMEs::ThunderNetworkInfoCommon::StationInfo>]’
/usr/include/c++/7/bits/stl_list.h:1801:32: required from ‘void std::__cxx11::list<_Tp, _Alloc>::_M_insert(std::__cxx11::list<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {const HomePlugAvMMEs::ThunderNetworkInfoV1::StaData&}; _Tp = HomePlugAvMMEs::ThunderNetworkInfoCommon::StationInfo; _Alloc = std::allocator<HomePlugAvMMEs::ThunderNetworkInfoCommon::StationInfo>; std::__cxx11::list<_Tp, _Alloc>::iterator = std::_List_iterator<HomePlugAvMMEs::ThunderNetworkInfoCommon::StationInfo>]’
/usr/include/c++/7/bits/stl_list.h:1133:4: required from ‘void std::__cxx11::list<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {const HomePlugAvMMEs::ThunderNetworkInfoV1::StaData&}; _Tp = HomePlugAvMMEs::ThunderNetworkInfoCommon::StationInfo; _Alloc = std::allocator<HomePlugAvMMEs::ThunderNetworkInfoCommon::StationInfo>]’
/usr/include/c++/7/bits/stl_list.h:1730:18: required from ‘void std::__cxx11::list<_Tp, _Alloc>::_M_initialize_dispatch(_InputIterator, _InputIterator, std::__false_type) [with _InputIterator = const HomePlugAvMMEs::ThunderNetworkInfoV1::StaData*; _Tp = HomePlugAvMMEs::ThunderNetworkInfoCommon::StationInfo; _Alloc = std::allocator<HomePlugAvMMEs::ThunderNetworkInfoCommon::StationInfo>]’
/usr/include/c++/7/bits/stl_list.h:712:26: required from ‘std::__cxx11::list<_Tp, _Alloc>::list(_InputIterator, _InputIterator, const allocator_type&) [with _InputIterator = const HomePlugAvMMEs::ThunderNetworkInfoV1::StaData*; <template-parameter-2-2> = void; _Tp = HomePlugAvMMEs::ThunderNetworkInfoCommon::StationInfo; _Alloc = std::allocator<HomePlugAvMMEs::ThunderNetworkInfoCommon::StationInfo>; std::__cxx11::list<_Tp, _Alloc>::allocator_type = std::allocator<HomePlugAvMMEs::ThunderNetworkInfoCommon::StationInfo>]’
tools/../common/hpmmes.h:783:132: required from here
/usr/include/c++/7/ext/new_allocator.h:136:4: error: ‘HomePlugAvMMEs::ThunderNetworkInfoCommon::StationInfo::StationInfo(const TStaData&) [with TStaData = HomePlugAvMMEs::ThunderNetworkInfoV1::StaData]’ is private within this context
{ ::new((void *)__p) _Up(std::forward<_Args>(__args)...); }
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from tools/../common/dlanmonitor.h:14:0,
from tools/dlanpasswd.cpp:11:
tools/../common/hpmmes.h:645:7: note: declared private here
StationInfo(const TStaData& d) :
^~~~~~~~~~~
makefile:15: recipe for target 'tools/dlanpasswd.o' failed
make: *** [tools/dlanpasswd.o] Error 1
***************************************************************************



Wenn ich das richtig verstehe, hat es mit diesem Programmteil aus der hpmmes.h zu tun:
(Zeile 645 ist fett markiert)


C++:
************************************************************************
  namespace ThunderNetworkInfoCommon
  {
    enum { eMMType = 0x0038, eMMTypeReq = eVS + eMMType + eReq, eMMTypeCnf = eVS + eMMType + eCnf };
    enum { eStation = 0, eProxyCCo = 1, eCCo = 2 };
    
    class StationInfo
    {
      CMACAddress addr, firstBridgedAddr;
      uint32_t uAvgTxPhyRateMbps, uAvgRxPhyRateMbps;
      friend class std::list<StationInfo>;
      template<class TStaData>
  StationInfo(const TStaData& d) :
        addr(d.cAddr), firstBridgedAddr(d.cFirstBridgedAddr),
        uAvgTxPhyRateMbps(letohx(d.uAvgTxPhyRateMbps)),
        uAvgRxPhyRateMbps(letohx(d.uAvgRxPhyRateMbps)) {}
    public:    
      const CMACAddress& GetAddress() const { return addr; }
      const CMACAddress& GetFirstBridgedAddress() const { return firstBridgedAddr; }
      uint32_t GetTxCodedRate() const { return uAvgTxPhyRateMbps; }
      uint32_t GetRxCodedRate() const { return uAvgRxPhyRateMbps; }
      double GetTxRawRate() const { return uAvgTxPhyRateMbps * 21.0 / 16.0; }
      double GetRxRawRate() const { return uAvgRxPhyRateMbps * 21.0 / 16.0; }
    };
  }
***********************************************************************3



Mit meinen alten topdown-"Programmierkenntnissen" kann ich das Problem nicht lösen.
Ein einfaches "public" vor "const" bringt auch keinen Erfolg.

Ich vermute mal, wenn man weiss wie, ist das keine Riesensache ... oder täusche ich mich da?

Bin für alle Hinweise dankbar.

Grüsse Hans


Und sorry, die schönen weissen Textfelder kriege ich nicht hin.

Dieser Post wurde am 17.07.2019 um 08:38 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
17.07.2019, 08:37 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Hi,

zwei Fragen:

Welcher gcc/g++ wird verwendet? Ich vermute irgendein gcc 7.x?

Ich vermute stark, wenn es sich um "alte" dlan software handelt, das du einen älteren gcc (gcc 4 ist meistens ein guter ansatzpunkt) verwenden müsstest, damit man diese alte software ohne großen aufwand übersetzen kann.

Ansonsten wäre der Ansatzpunkt hier:


Zitat:

from tools/dlanpasswd.cpp:11


--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
17.07.2019, 12:38 Uhr
hubach




Zitat von FloSoft:

Welcher gcc/g++ wird verwendet? Ich vermute irgendein gcc 7.x?


Mit dpkg --get-selections | grep gcc erhalte ich:

Zitat von hubach:

gcc install
gcc-5 install
gcc-5-base:amd64 install
gcc-5-base:i386 install
gcc-6-base:amd64 install
gcc-6-base:i386 install
gcc-7 install
gcc-7-base:amd64 install
gcc-8-base:amd64 install
gcc-8-base:i386 install
libgcc-5-dev:amd64 install
libgcc-7-dev:amd64 install
libgcc1:amd64 install
libgcc1:i386 install


Nur weiss ich nicht, welche Version vom make-Befehl angesprochen wird.

Ich werde mal versuchen eine Version 4 von gcc zu installieren und mich darum kümmern, wie ich make dazu bringe, damit zu arbeiten.


Zitat von FloSoft:

from tools/dlanpasswd.cpp:11


Da schaue ich mal rein. Das wird wohl Monate dauern, bis ich soweit bin und etwas mit dem Code anfangen kann.

Danke und Grüsse Hans

Dieser Post wurde am 17.07.2019 um 12:48 Uhr von hubach editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
17.07.2019, 16:29 Uhr
hubach



Einige Stunden später ....

Inzwischen weiss ich, dass beim Aufruf von gcc die Version 7.4.0 (Ubuntu 7.4.0-1ubuntu1~18.04.1) ausgeführt wird.

Inzwischen habe ich gcc-4.8 und gcc-4.8-base installiert und das makefile so angepasst:


Zitat:

TOOLS_SRC := tools
TOOLS_BIN := $(patsubst $(TOOLS_SRC)/%.cpp, %, $(wildcard $(TOOLS_SRC)/*.cpp))
COMMON_SRC := common
COMMON_OBJ := $(patsubst %.cpp, %.o, $(wildcard $(COMMON_SRC)/*.cpp))

PREFIX ?= /usr/local
INSTALL ?= install
RM ?= rm
CXXFLAGS += -w

all: $(TOOLS_BIN)

%.o: %.cpp
@echo compiling $< ...
# @$(CXX) $(CXXFLAGS) -c $< -o $@
@gcc-4.8 $(CXXFLAGS) -c $< -o $@

$(TOOLS_BIN): %: $(TOOLS_SRC)/%.o $(COMMON_OBJ)
@echo linking $@ ...
# @$(CXX) $(CXXFLAGS) -o $@ $< $(COMMON_OBJ)
@gcc-4.8 $(CXXFLAGS) -o $@ $< $(COMMON_OBJ)

clean:
@$(RM) -fv $(TOOLS_BIN) $(TOOLS_SRC)/*.o $(COMMON_OBJ)

install: all

uninstall:
@for file in $(TOOLS_BIN); do $(RM) -v $(PREFIX)/bin/$$file; done

.PHONY: all clean install uninstall



Da das aber nur einen weiteren Fehler

Zitat:

compiling tools/dlanpasswd.cpp ...
gcc-4.8: error trying to exec 'cc1plus': execvp: Datei oder Verzeichnis nicht gefunden
makefile:15: recipe for target 'tools/dlanpasswd.o' failed
make: *** [tools/dlanpasswd.o] Error 1


brachte, werde ich hier wohl abbrechen müssen

Zuviel Aufwand für das was es mir bringt. Werde wohl den Weg des geringsten Widerstands gehen, den Schrank durchwühlen und mal sehen ob die Anwendung auf einer alten Win-Platte läuft.

Trotzdem vielen Dank für die Hilfestellung. Hans

Dieser Post wurde am 17.07.2019 um 16:32 Uhr von hubach editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (GNU/Linux, *NIX, *BSD und Co) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: