¿Cómo construir altcoin en mingw?

Sistema operativo: Windows 10

Dependencias instaladas:

  • -qt4.8.6
  • CCG 6.3.0
  • impulsar 1_55_0
  • berkeleyDB 4.8.30NC
  • abre SSL 1.0.2l

Intenté compilar con los siguientes comandos:

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

Eso resultó en este error:

./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

¿Cómo soluciono este problema?


Es el resultado después del comando qmake. Es parte del archivo Makefile.Release

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

Respuestas (1)

No compiló LevelDB. En el código fuente de su altcoin, debería ver una carpeta para leveldb. cden ese directorio y compilar leveldb. Debe haber instrucciones para eso en la carpeta leveldb.

Gracias por tu consejo. pero compilé LevelDB porque tengo la fuente de LevelDB en la carpeta fuente de altcoin
El hecho de que la fuente esté ahí no significa que haya sido compilada. El archivo MAKE con el que creó no incluye necesariamente instrucciones para construir ese código. IIRC, muchas altcoins son así en el sentido de que las cosas de leveldb deben construirse por separado, ya que utiliza archivos MAKE separados.
si es así, ¿recompilar en LevelDB?
Tu último comentario no tiene sentido. Debe construir leveldb y colocar los archivos resultantes (deberían ser .aarchivos en el lugar correcto para que puedan vincularse cuando construya el resto de su código fuente de altcoin).
¿Cómo sé que la compilación no fue exitosa?
Confirmé que hay un archivo de objeto leveldb.
Entonces no está en un lugar donde el enlazador pueda encontrarlo. ¿Puede actualizar su pregunta con un enlace al código fuente que está creando?
Es el resultado después del comando qmake. Es parte del archivo Makefile.Release
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
Publique sus comentarios anteriores como una edición de su publicación original, es demasiado difícil de leer aquí.
Lo siento, mostrar contenido
¿Ves los archivos libleveldb.ay libmemenv.aen C:/toscoin-src/src/leveldb/?
El archivo ubicado en el directorio C:\toscoin-src\src\leveldb
Te agradecería que me dijeras como.