Wie baut man Altcoin in Mingw?

Betriebssystem: Windows 10

Installierte Abhängigkeiten:

  • -qt4.8.6
  • gcc 6.3.0
  • Boost 1_55_0
  • berkeleyDB 4.8.30NC
  • openssl 1.0.2l

Ich habe versucht, mit den folgenden Befehlen zu kompilieren:

qmake "USE_UPNP=1" coin-pt.pro
mingw32-make -f Makefile.Release

Das führte zu diesem Fehler:

./build\leveldb.o:leveldb.cpp:(.text+0x664): undefined reference to leveldb::DB::Open(leveldb::Options const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, leveldb::DB**)'
./build\leveldb.o:leveldb.cpp:(.text+0x72b): undefined reference toleveldb::DestroyDB(std::__cxx11::basic_string, std::allocator > const&, leveldb::Options const&)' ./build\leveldb.o:leveldb.cpp:(.text+0x826): undefined reference to leveldb::Status::ToString[abi:cxx11]() const'
./build\leveldb.o:leveldb.cpp:(.text+0x9b3): undefined reference toleveldb::Status::ToStringabi:cxx11 const' ./build\txdb.o:txdb.cpp:(.text+0x39b): undefined reference to leveldb::Status::ToString[abi:cxx11]() const'
./build\txdb.o:txdb.cpp:(.text+0xcc5): undefined reference toleveldb::Status::ToStringabi:cxx11 const' ./build\txdb.o:txdb.cpp:(.text+0xeb4): undefined reference to leveldb::Status::ToString[abi:cxx11]() const'
./build\txdb.o:txdb.cpp:(.text+0x1520): more undefined references toleveldb::Status::ToStringabi:cxx11 const' follow collect2.exe: error: ld returned 1 exit status Makefile.Release:287: recipe for target 'release\Coin-qt.exe' failed mingw32-make: *** [release\Coin-qt.exe] Error 1

Wie behebe ich dieses Problem?


Es ist das Ergebnis nach dem Befehl qmake. Es ist Teil der Makefile.Release-Datei

LIBS = -L"c:\Qt\4.8.6\lib" build\bitcoin-qt_res.o -lshlwapi -lpthread -lssl -lcrypto -ldb_cxx -lws2_32 -lole32 -loleaut32 -luuid -lgdi32 -lboost_system-mgw63-mt-1_55 -lboost_filesystem-mgw63-mt-1_55 -lboost_program_options-mgw63-mt-1_55 -lboost_thread-mgw63-mt-1_55 -LC:/deps/miniupnpc -lminiupnpc -liphlpapi  C:/toscoin-src/src/leveldb/libleveldb.a C:/toscoin-src/src/leveldb/libmemenv.a -lshlwapi -LC:/deps/boost_1_55_0/stage/lib -Lc:/deps/db-5.3.28.NC/build_unix -Lc:/deps/openssl-1.0.2l -LC:/deps/qrencode-3.4.4/.libs -lssl -lcrypto -ldb_cxx -lws2_32 -lshlwapi -lmswsock -lole32 -loleaut32 -luuid -lgdi32 -lboost_system-mgw63-mt-1_55 -lboost_filesystem-mgw63-mt-1_55 -lboost_program_options-mgw63-mt-1_55 -lboost_thread-mgw63-mt-1_55 -lboost_chrono-mgw63-mt-1_55 -lQtGui4 -lQtNetwork4 -lQtCore4 -lpthread C:/toscoin-src/src/leveldb/libleveldb.a C:/toscoin-src/src/leveldb/libmemenv.a

Antworten (1)

Sie haben LevelDB nicht kompiliert. Im Quellcode Ihres Altcoins sollten Sie einen Ordner für leveldb sehen. cdin dieses Verzeichnis und baue leveldb. Es sollte eine Anleitung dafür im Leveldb-Ordner geben.

Danke für deinen Rat. aber ich habe LevelDB kompiliert, weil ich die LevelDB-Quelle im Quellordner von Altcoin habe
Nur weil die Quelle vorhanden ist, heißt das nicht, dass sie kompiliert wurde. Das Makefile, mit dem Sie erstellt haben, enthält nicht unbedingt Anweisungen zum Erstellen dieses Codes. IIRC, viele Altcoins sind insofern so, als das Leveldb-Zeug separat erstellt werden muss, da es separate Makefiles verwendet.
Wenn ja, Neukompilierung in LevelDB?
Ihr letzter Kommentar ergibt keinen Sinn. Sie müssen leveldb erstellen und die resultierenden Dateien ablegen (sollten .aDateien an der richtigen Stelle sein, damit sie verknüpft werden können, wenn Sie den Rest Ihres Altcoin-Quellcodes erstellen.
Woher weiß ich, dass die Kompilierung nicht erfolgreich war?
Ich habe bestätigt, dass es eine Leveldb-Objektdatei gibt.
Dann ist es nicht an einer Stelle, wo der Linker es finden kann. Können Sie Ihre Frage mit einem Link zum Quellcode aktualisieren, den Sie erstellen?
Es ist das Ergebnis nach dem Befehl qmake. Es ist Teil der Makefile.Release-Datei
LIBS = -L"c:\Qt\4.8.6\lib" build\bitcoin-qt_res.o -lshlwapi -lpthread -lssl -lcrypto -ldb_cxx -lws2_32 -lole32 -loleaut32 -luuid -lgdi32 -lboost_system-mgw63-mt- 1_55 -lboost_filesystem-mgw63-mt-1_55 -lboost_program_options-mgw63-mt-1_55 -lboost_thread-mgw63-mt-1_55
-LC:/deps/miniupnpc -lminiupnpc -liphlpapi C:/toscoin-src/src/leveldb/libleveldb.a C:/toscoin-src/src/leveldb/libmemenv.a -lshlwapi -LC:/deps/boost_1_55_0/stage /lib -Lc:/deps/db-5.3.28.NC/build_unix -Lc:/deps/openssl-1.0.2l -LC:/deps/qrencode-3.4.4/.libs -lssl -lcrypto -ldb_cxx -lws2_32 -lshlwapi -lmswsock -lole32 -loleaut32 -luuid -lgdi32 -lboost_system-mgw63-mt-1_55 -lboost_filesystem-mgw63-mt-1_55 -lboost_program_options-mgw63-mt-1_55 -lboost_thread-mgw63-mt-1_55
-lboost_chrono-mgw63-mt-1_55 -lQtGui4 -lQtNetwork4 -lQtCore4 -lpthread C:/toscoin-src/src/leveldb/libleveldb.a C:/toscoin-src/src/leveldb/libmemenv.a
Bitte posten Sie Ihre obigen Kommentare als Bearbeitung Ihres ursprünglichen Beitrags, es ist zu schwer, ihn hier zu lesen.
Entschuldigung, Inhalt anzeigen
Sehen Sie die Dateien libleveldb.aund libmemenv.ain C:/toscoin-src/src/leveldb/?
Die Datei befindet sich im Verzeichnis C:\toscoin-src\src\leveldb
Ich wäre Ihnen dankbar, wenn Sie mir sagen könnten, wie.