NeoxaChain / Neoxa

Neoxa is an innovative Proof of Work cryptocurrency that seamlessly merges the realms of gaming and cryptocurrency.
https://neoxa.net/
MIT License
55 stars 30 forks source link

Issues compiling from source #24

Closed shitbox120 closed 2 months ago

shitbox120 commented 1 year ago

I have been breaking my head for 2 days and do not know what library I am missing. This is the error I am seeing.

` validation.cpp: In constructor ‘ConnectTrace::ConnectTrace(CTxMemPool&)’: validation.cpp:3103:94: error: ‘_1’ was not declared in this scope 3103 | pool.NotifyEntryRemoved.connect(boost::bind(&ConnectTrace::NotifyEntryRemoved, this, _1, 2)); | ^~ validation.cpp:3103:94: note: suggested alternatives: In file included from /usr/include/boost/mpl/aux/include_preprocessed.hpp:37, from /usr/include/boost/mpl/placeholders.hpp:43, from /usr/include/boost/iterator/iterator_categories.hpp:16, from /usr/include/boost/iterator/iterator_facade.hpp:13, from /usr/include/boost/filesystem/path.hpp:22, from /usr/include/boost/filesystem.hpp:16, from ./fs.h:11, from ./util.h:20, from primitives/block.h:13, from core_memusage.h:9, from coins.h:11, from validation.h:16, from validation.cpp:8:

`

AndyNeoxa commented 1 year ago

Which OS are you compiling in? Also please make sure you follow the cross-compliation guide.

https://github.com/NeoxaChain/Neoxa/blob/main/doc/build-cross.md

shitbox120 commented 1 year ago

I am using Ubuntu 20 with DB 4.8 . I have flowed it step by step.

./configure gives me this.

Options used to compile and link:
  with wallet         = yes
  with gui / qt       = yes
    with qr           = yes
  with zmq            = yes
  with test           = yes
  with bench          = yes
  with upnp           = yes
  use asm             = yes
  sanitizers          = 
  debug enabled       = no
  stacktraces enabled = yes
  crash hooks enabled = no
  miner enabled       = yes
  gprof enabled       = no
  werror              = no

  target os           = linux
  build os            = 

  CC                  = gcc
  CFLAGS              = -pthread -g -O2 -g1 -fno-omit-frame-pointer
  CPPFLAGS            = -I/usr/local/berkeleydb/include -I/usr/local/berkeleydb/include/ -DHAVE_BUILD_INFO -D__STDC_FORMAT_MACROS
  CXX                 = g++ -std=c++14
  CXXFLAGS            = -g -O2 -g1 -fno-omit-frame-pointer -Wall -Wextra -Wformat -Wvla -Wformat-security -Wno-unused-parameter -Wno-implicit-fallthrough
  LDFLAGS             = -lpthread -L/usr/local/berkeleydb/lib -Wl,-R,/usr/local/berkeleydb/lib -Wl,--enable-new-dtags
  ARFLAGS             = cr
shitbox120 commented 1 year ago

UPDATE: I am now able to make it to this final point. Am i missing a depend or do i have the wrong version of c?

httpserver.cpp:77:10: error: ‘deque’ in namespace ‘std’ does not name a template type
   77 |     std::deque<std::unique_ptr<WorkItem>> queue;
      |          ^~~~~
httpserver.cpp:43:1: note: ‘std::deque’ is defined in header ‘<deque>’; did you forget to ‘#include <deque>’?
   42 | #include <condition_variable>
  +++ |+#include <deque>
   43 | 
httpserver.cpp: In member function ‘bool WorkQueue<WorkItem>::Enqueue(WorkItem*)’:
httpserver.cpp:95:13: error: ‘queue’ was not declared in this scope; did you mean ‘Enqueue’?
   95 |         if (queue.size() >= maxDepth) {
      |             ^~~~~
      |             Enqueue
httpserver.cpp:98:9: error: ‘queue’ was not declared in this scope; did you mean ‘Enqueue’?
   98 |         queue.emplace_back(std::unique_ptr<WorkItem>(item));
      |         ^~~~~
      |         Enqueue
httpserver.cpp: In member function ‘void WorkQueue<WorkItem>::Run()’:
httpserver.cpp:109:35: error: ‘queue’ was not declared in this scope; did you mean ‘Enqueue’?
  109 |                 while (running && queue.empty())
      |                                   ^~~~~
      |                                   Enqueue
httpserver.cpp:113:31: error: ‘queue’ was not declared in this scope; did you mean ‘Enqueue’?
  113 |                 i = std::move(queue.front());
      |                               ^~~~~
      |                               Enqueue
make[2]: *** [Makefile:8713: libneoxa_server_a-httpserver.o] Error 1
yoyo20016 commented 9 months ago

UPDATE: I am now able to make it to this final point. Am i missing a depend or do i have the wrong version of c?

httpserver.cpp:77:10: error: ‘deque’ in namespace ‘std’ does not name a template type
   77 |     std::deque<std::unique_ptr<WorkItem>> queue;
      |          ^~~~~
httpserver.cpp:43:1: note: ‘std::deque’ is defined in header ‘<deque>’; did you forget to ‘#include <deque>’?
   42 | #include <condition_variable>
  +++ |+#include <deque>
   43 | 
httpserver.cpp: In member function ‘bool WorkQueue<WorkItem>::Enqueue(WorkItem*)’:
httpserver.cpp:95:13: error: ‘queue’ was not declared in this scope; did you mean ‘Enqueue’?
   95 |         if (queue.size() >= maxDepth) {
      |             ^~~~~
      |             Enqueue
httpserver.cpp:98:9: error: ‘queue’ was not declared in this scope; did you mean ‘Enqueue’?
   98 |         queue.emplace_back(std::unique_ptr<WorkItem>(item));
      |         ^~~~~
      |         Enqueue
httpserver.cpp: In member function ‘void WorkQueue<WorkItem>::Run()’:
httpserver.cpp:109:35: error: ‘queue’ was not declared in this scope; did you mean ‘Enqueue’?
  109 |                 while (running && queue.empty())
      |                                   ^~~~~
      |                                   Enqueue
httpserver.cpp:113:31: error: ‘queue’ was not declared in this scope; did you mean ‘Enqueue’?
  113 |                 i = std::move(queue.front());
      |                               ^~~~~
      |                               Enqueue
make[2]: *** [Makefile:8713: libneoxa_server_a-httpserver.o] Error 1

I have the same problem when compiling on arm or x64 linux... I tried to compile with c++17 but i still have the problem

yoyo20016 commented 9 months ago

@AndyNeoxa @shitbox120 I think I fixed the problem after spending by whole evening on it. The httpserver.cpp is missing this line #include <deque> on the top of the file. I complied the wallet for aarch64 and it works(it started and I am syncing the blockchain) Also on the makefile I made some changes for using c++17 and not c++14 but I think the second change is not required.

I also modified the validation.cpp as this:

Look in the code_modifications_neoxa.txt

And validationinterface.cpp as this :

`Look in the code_modifications_neoxa.txt

And validation.cpp:

`Look in the code_modifications_neoxa.txt

The most important changes are to change the placeholder binding '_1','_2','_3' by 'boost::placeholders::_1','boost::placeholders::_2','boost::placeholders::_3' and to add '#include <boost/bind.hpp>' to the files that uses thoses placeholders

code_modifications_neoxa.txt