Dear gem5 faculties: Hi! I’ve been trying to follow the getting started guide on the gem5 website, and encountered this question in “Creating a very simple SimObject” part of the tutorial. I removed the files under src/learning_gem5/part2, and substituted them with the following files, content of which are precisely copied down from the tutorial:
However, when I tried to recompile the gem5.opt, the following error was shown: In file included from build/X86/learning_gem5/part_new/hello_object.cc:2: build/X86/learning_gem5/part_new/hello_object.hh:8:1: error: expected class-name before '{' token 8 | { | ^ build/X86/learning_gem5/part_new/hello_object.hh:10:27: error: 'HelloObjectParams' does not name a type; did you mean 'HelloObject'? 10 | HelloObject(const HelloObjectParams &p); | ^~~~~~~~~~~~~~~~~ | HelloObject build/X86/learning_gem5/part_new/hello_object.cc:6:32: error: 'HelloObjectParams' does not name a type; did you mean 'HelloObject'? 6 | HelloObject::HelloObject(const HelloObjectParams &p) : SimObject(p) | ^~~~~~~~~~~~~~~~~ | HelloObject build/X86/learning_gem5/part_new/hello_object.cc: In constructor 'HelloObject::HelloObject(const int&)': build/X86/learning_gem5/part_new/hello_object.cc:6:56: error: class 'HelloObject' does not have any field named 'SimObject' 6 | HelloObject::HelloObject(const HelloObjectParams &p) : SimObject(p) | ^~~~~~~~~ [SO Param] m5.objects.Ethernet, EtherLink -> X86/params/EtherLink.hh [SO Param] m5.objects.Ethernet, DistEtherLink -> X86/params/DistEtherLink.hh [SO Param] m5.objects.Ethernet, Sinic -> X86/params/Sinic.hh [SO Param] m5.objects.FuncUnit, FUDesc -> X86/params/FUDesc.hh [SO Param] m5.objects.InstPBTrace, InstPBTrace -> X86/params/InstPBTrace.hh scons: *** [build/X86/learning_gem5/part_new/hello_object.o] Error 1 scons: building terminated because of errors. It seems that the HelloObject sources cant find HelloObjectParams and SimObject definitions. However, after throwing everything in the header and the source file under namespace gem5, and adding cxx_class member in the python class definition, everything seems to work out fine. So is it an issue that needs to be fixed in the tutorial, or is the namespace inclusion unnecessary here? Thanks! Zhiyuan Zhang 2022.2.2
_______________________________________________ gem5-users mailing list -- gem5-users@gem5.org To unsubscribe send an email to gem5-users-le...@gem5.org %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s