как создать альткоин в mingw?

ОС : Виндовс 10

Установленные зависимости:

  • -qt4.8.6
  • gcc 6.3.0
  • повысить 1_55_0
  • БерклиДБ 4.8.30NC
  • опенсл 1.0.2л

Я попытался скомпилировать с помощью следующих команд:

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

Это привело к этой ошибке:

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

Как решить эту проблему?


Это результат после команды qmake. Это часть файла 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

Ответы (1)

Вы не компилировали LevelDB. В исходном коде вашего альткоина вы должны увидеть папку для leveldb. cdв этот каталог и соберите leveldb. Для этого должны быть инструкции в папке leveldb.

Спасибо за ваш совет. но я скомпилировал LevelDB, потому что у меня есть исходный код LevelDB в исходной папке альткоина.
То, что исходники есть, не означает, что они были скомпилированы. Созданный вами make-файл не обязательно содержит инструкции по сборке этого кода. IIRC, многие альткойны похожи на это в том, что материал leveldb должен быть собран отдельно, поскольку он использует отдельные make-файлы.
если да перекомпилировать в LevelDB?
Ваш последний комментарий не имеет смысла. Вам нужно собрать leveldb и поместить полученные файлы (должны быть .aфайлы в нужном месте, чтобы их можно было связать при сборке остального исходного кода вашего альткоина.
Как я узнаю, что компиляция не удалась?
Я подтвердил наличие объектного файла leveldb.
Тогда его нет в том месте, где компоновщик может его найти. Можете ли вы обновить свой вопрос со ссылкой на исходный код, который вы создаете?
Это результат после команды qmake. Это часть файла 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
Пожалуйста, опубликуйте свои комментарии выше в качестве редактирования исходного сообщения, это слишком сложно читать здесь.
Извините, показать содержимое
Вы видите файлы libleveldb.aи libmemenv.aв C:/toscoin-src/src/leveldb/?
Файл находится в каталоге C:\toscoin-src\src\leveldb.
Я был бы признателен, если бы вы могли сказать мне, как это сделать.