Jump to content

Сборка bitcoid под Linux


SanDocan88

Recommended Posts

Пытаюсь собрать bitcoind из сходников под Linux. Делаю согласно https://forum.bits.media/index.php?/blog/1/entry-19-sborka-bitcoind-iz-iskhodnikov/. После установки зависимостей начинанаю собирать сам bitcoind. Процесс сборки прекращается после строк :

g++ -O2 -pthread -Wall -Wextra -Wformat -Wformat-security -Wno-unused-parameter -g -DBOOST_SPIRIT_THREADSAFE -D_FILE_OFFSET_BITS=64 -I/home/testuser/btc/bitcoin-0.8.6/src -I/home/testuser/btc/bitcoin-0.8.6/src/obj -DUSE_IPV6=1 -I/home/testuser/btc/bitcoin-0.8.6/src/leveldb/include -I/home/testuser/btc/bitcoin-0.8.6/src/leveldb/helpers -DHAVE_BUILD_INFO -fno-stack-protector -fstack-protector-all -Wstack-protector -D_FORTIFY_SOURCE=2  -o bitcoind leveldb/libleveldb.a obj/alert.o obj/version.o obj/checkpoints.o obj/netbase.o obj/addrman.o obj/crypter.o obj/key.o obj/db.o obj/init.o obj/keystore.o obj/main.o obj/net.o obj/protocol.o obj/bitcoinrpc.o obj/rpcdump.o obj/rpcnet.o obj/rpcmining.o obj/rpcwallet.o obj/rpcblockchain.o obj/rpcrawtransaction.o obj/script.o obj/sync.o obj/util.o obj/wallet.o obj/walletdb.o obj/hash.o obj/bloom.o obj/noui.o obj/leveldb.o obj/txdb.o -Wl,-z,relro -Wl,-z,now   -Wl,-Bdynamic -l boost_system -l boost_filesystem -l boost_program_options -l boost_thread -l db_cxx -l ssl -l crypto -Wl,-Bdynamic -l z -l dl -l pthread /home/testuser/btc/bitcoin-0.8.6/src/leveldb/libleveldb.a /home/testuser/btc/bitcoin-0.8.6/src/leveldb/libmemenv.a

 

В качестве системы для компиляции использовал

Linux 3.2.0-4-amd64 Debian 7.4. На  и Debian 6.0.9 то же самое.

Может кто сталкивался. Помогите пожалуйста

 
Link to comment
Share on other sites

Пытаюсь собрать bitcoind из сходников под Linux. Делаю согласно https://forum.bits.media/index.php?/blog/1/entry-19-sborka-bitcoind-iz-iskhodnikov/. После установки зависимостей начинанаю собирать сам bitcoind. Процесс сборки прекращается после строк :

g++ -O2 -pthread -Wall -Wextra -Wformat -Wformat-security -Wno-unused-parameter -g -DBOOST_SPIRIT_THREADSAFE -D_FILE_OFFSET_BITS=64 -I/home/testuser/btc/bitcoin-0.8.6/src -I/home/testuser/btc/bitcoin-0.8.6/src/obj -DUSE_IPV6=1 -I/home/testuser/btc/bitcoin-0.8.6/src/leveldb/include -I/home/testuser/btc/bitcoin-0.8.6/src/leveldb/helpers -DHAVE_BUILD_INFO -fno-stack-protector -fstack-protector-all -Wstack-protector -D_FORTIFY_SOURCE=2  -o bitcoind leveldb/libleveldb.a obj/alert.o obj/version.o obj/checkpoints.o obj/netbase.o obj/addrman.o obj/crypter.o obj/key.o obj/db.o obj/init.o obj/keystore.o obj/main.o obj/net.o obj/protocol.o obj/bitcoinrpc.o obj/rpcdump.o obj/rpcnet.o obj/rpcmining.o obj/rpcwallet.o obj/rpcblockchain.o obj/rpcrawtransaction.o obj/script.o obj/sync.o obj/util.o obj/wallet.o obj/walletdb.o obj/hash.o obj/bloom.o obj/noui.o obj/leveldb.o obj/txdb.o -Wl,-z,relro -Wl,-z,now   -Wl,-Bdynamic -l boost_system -l boost_filesystem -l boost_program_options -l boost_thread -l db_cxx -l ssl -l crypto -Wl,-Bdynamic -l z -l dl -l pthread /home/testuser/btc/bitcoin-0.8.6/src/leveldb/libleveldb.a /home/testuser/btc/bitcoin-0.8.6/src/leveldb/libmemenv.a

 

В качестве системы для компиляции использовал

Linux 3.2.0-4-amd64 Debian 7.4. На  и Debian 6.0.9 то же самое.

Может кто сталкивался. Помогите пожалуйста

Как именно прекращается? ошибкой? или просто прекращается и  командное окно готово к приему новых команд?

Link to comment
Share on other sites

 

 

биткоинТ, bitcoinD, что дальше?

аааа. Не знаешь, не комментируй.

bitcoinэто демон биткоина. На серверах ставится именно он

Link to comment
Share on other sites

 

Пытаюсь собрать bitcoind из сходников под Linux. Делаю согласно https://forum.bits.media/index.php?/blog/1/entry-19-sborka-bitcoind-iz-iskhodnikov/. После установки зависимостей начинанаю собирать сам bitcoind. Процесс сборки прекращается после строк :

g++ -O2 -pthread -Wall -Wextra -Wformat -Wformat-security -Wno-unused-parameter -g -DBOOST_SPIRIT_THREADSAFE -D_FILE_OFFSET_BITS=64 -I/home/testuser/btc/bitcoin-0.8.6/src -I/home/testuser/btc/bitcoin-0.8.6/src/obj -DUSE_IPV6=1 -I/home/testuser/btc/bitcoin-0.8.6/src/leveldb/include -I/home/testuser/btc/bitcoin-0.8.6/src/leveldb/helpers -DHAVE_BUILD_INFO -fno-stack-protector -fstack-protector-all -Wstack-protector -D_FORTIFY_SOURCE=2  -o bitcoind leveldb/libleveldb.a obj/alert.o obj/version.o obj/checkpoints.o obj/netbase.o obj/addrman.o obj/crypter.o obj/key.o obj/db.o obj/init.o obj/keystore.o obj/main.o obj/net.o obj/protocol.o obj/bitcoinrpc.o obj/rpcdump.o obj/rpcnet.o obj/rpcmining.o obj/rpcwallet.o obj/rpcblockchain.o obj/rpcrawtransaction.o obj/script.o obj/sync.o obj/util.o obj/wallet.o obj/walletdb.o obj/hash.o obj/bloom.o obj/noui.o obj/leveldb.o obj/txdb.o -Wl,-z,relro -Wl,-z,now   -Wl,-Bdynamic -l boost_system -l boost_filesystem -l boost_program_options -l boost_thread -l db_cxx -l ssl -l crypto -Wl,-Bdynamic -l z -l dl -l pthread /home/testuser/btc/bitcoin-0.8.6/src/leveldb/libleveldb.a /home/testuser/btc/bitcoin-0.8.6/src/leveldb/libmemenv.a

 

В качестве системы для компиляции использовал

Linux 3.2.0-4-amd64 Debian 7.4. На  и Debian 6.0.9 то же самое.

Может кто сталкивался. Помогите пожалуйста

Как именно прекращается? ошибкой? или просто прекращается и  командное окно готово к приему новых команд?

 

да. выдаёт именно командное окно, готовое к приёму новых команд.

на первых этапах ещё были строчки после текста:

/usr/bin/ld: cannot find -lboost_system

/usr/bin/ld: cannot find -lboost_filesystem

/usr/bin/ld: cannot find -lboost_program_options

/usr/bin/ld: cannot find -lboost_thread

collect2: error: ld returned 1 exit status

make: *** [bitcoind] Ошибка 1

Link to comment
Share on other sites

В качестве системы для компиляции использовал

Linux 3.2.0-4-amd64 Debian 7.4. На  и Debian 6.0.9 то же самое.

Может кто сталкивался. Помогите пожалуйста

 

А чего такое древнее? Собрал на Ubuntu 13.10 под amd64, не без затыков конечно (оно поросшую мхом BDB 4.8 захотело). Инструкцию по сборке традиционно не читал.  :rolleyes:

$ sudo aptitude install libdb++-dev libboost1.53-all-dev
$ ./autogen.sh
$ ./configure --with-incompatible-bdb
$ make
$ sudo make install

Получился Bitcoin RPC client version v0.9.0.0-g7f080fb-beta и Bitcoin Core Daemon version v0.9.0.0-g7f080fb-beta

 

воркает. ;)

 

 

 

/usr/bin/ld: cannot find -lboost_system

 

Эмм.. Ну оно внятно Вам нам написало /usr/bin/ld: cannot find -lboost_system - не может найти libboost, поставьте её наконец.

Edited by ggss
Link to comment
Share on other sites

Ясно. Я собирал пулл MPOS, и там на одном из этапов сборки - установка litecoind (ну или другого демона, зависит от криптовалюты). Можете посмотреть вот тут. Надо поставить пакет библиотек

sudo apt-get install gitsudo apt-get install build-essential libboost-all-dev libcurl4-openssl-dev libdb5.1-dev libdb5.1++-dev
Edited by pendalf2008
Link to comment
Share on other sites

Я бы сказал

 

sudo apt-get install git sudo apt-get install build-essential libboost-all-dev libcurl4-openssl-dev libdb5.1-dev libdb5.1++-dev

 

 Я бы сказал так:

sudo apt-get install gitsudo apt-get install build-essential libboost1.53-all-dev libcurl4-openssl-dev libdb5.1-dev libdb5.1++-dev
Edited by mylem
Link to comment
Share on other sites

С дебиан у меня тоже были проблемы, попробуй поставить на ubuntu, туда ставится нормально.

Link to comment
Share on other sites

народ а если собрать на виртуалке и запустить как на виртуалке так и на основной оси 2 демона

 

они будут взаимодействовать между собой?

Link to comment
Share on other sites

 

 

народ а если собрать на виртуалке и запустить как на виртуалке так и на основной оси 2 демона они будут взаимодействовать между собой?

Что ты подразумеваешь по взаимодействием?

Они будут точно так же взаимодействовать между собой как и два демона установленные на компьютерах на разных континентах.

Link to comment
Share on other sites

@BearA,я имею ввиду локальное взаимодействия без внешнего мира

скажем есть на основнойм компе нода со всеми блоками

далее отключаем выход в интернет

и запускаем на виртуалке вторую ноду с пустым блокчейном

будут ли они между собой синхронизироваться?

без затыков в виде указания ближайшей ноды вручную, то есть сами они найдут друг друга?

Edited by infoman
Link to comment
Share on other sites

@infoman,

Я точно не знаю как в биткойне реализован поиск пиров, но скорее всего  по принципу DHT.

Поэтому нет, не смогут, если заранее не будут знать адреса.

Link to comment
Share on other sites

Хотя нет, тут даже несколько проще, распределенная таблица не используется, банальный запрос в irc чат  на irc.lfnet.org.

Но вроде есть альтернативные адреса.

Так что в любом случае они друг друга не найдут.

Link to comment
Share on other sites

@BearA,я смотрел код кварка и нашел вот это:

Я правильно понимаю что тут демон поределяет внешний ip той подсети в которой он находится и потом

делает широковещательный запрос на этот ip с целью поиска возможных нод находящихся внутри подсети?

 

 

/** check whether a given address is in a network we can probably connect to */
bool IsReachable(const CNetAddr& addr)
{
LOCK(cs_mapLocalHost);
enum Network net = addr.GetNetwork();
return vfReachable[net] && !vfLimited[net];
}

bool GetMyExternalIP2(const CService& addrConnect, const char* pszGet, const char* pszKeyword, CNetAddr& ipRet)
{
SOCKET hSocket;
if (!ConnectSocket(addrConnect, hSocket))
return error("GetMyExternalIP() : connection to %s failed", addrConnect.ToString().c_str());

send(hSocket, pszGet, strlen(pszGet), MSG_NOSIGNAL);

string strLine;
while (RecvLine(hSocket, strLine))
{
if (strLine.empty()) // HTTP response is separated from headers by blank line
{
loop
{
if (!RecvLine(hSocket, strLine))
{
closesocket(hSocket);
return false;
}
if (pszKeyword == NULL)
break;
if (strLine.find(pszKeyword) != string::npos)
{
strLine = strLine.substr(strLine.find(pszKeyword) + strlen(pszKeyword));
break;
}
}
closesocket(hSocket);
if (strLine.find("<") != string::npos)
strLine = strLine.substr(0, strLine.find("<"));
strLine = strLine.substr(strspn(strLine.c_str(), " \t\n\r"));
while (strLine.size() > 0 && isspace(strLine[strLine.size()-1]))
strLine.resize(strLine.size()-1);
CService addr(strLine,0,true);
printf("GetMyExternalIP() received [%s] %s\n", strLine.c_str(), addr.ToString().c_str());
if (!addr.IsValid() || !addr.IsRoutable())
return false;
ipRet.SetIP(addr);
return true;
}
}
closesocket(hSocket);
return error("GetMyExternalIP() : connection closed");
}

bool GetMyExternalIP(CNetAddr& ipRet)
{
CService addrConnect;
const char* pszGet;
const char* pszKeyword;

for (int nLookup = 0; nLookup <= 1; nLookup++)
for (int nHost = 1; nHost <= 2; nHost++)
{
// We should be phasing out our use of sites like these. If we need
// replacements, we should ask for volunteers to put this simple
// php file on their web server that prints the client IP:
//
if (nHost == 1)
{
addrConnect = CService("91.198.22.70", 80); // checkip.dyndns.org

if (nLookup == 1)
{
CService addrIP("checkip.dyndns.org", 80, true);
if (addrIP.IsValid())
addrConnect = addrIP;
}

pszGet = "GET / HTTP/1.1\r\n"
"Host: checkip.dyndns.org\r\n"
"User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)\r\n"
"Connection: close\r\n"
"\r\n";

pszKeyword = "Address:";
}
else if (nHost == 2)
{
addrConnect = CService("212.117.175.194", 80); // www.showmyip.com

if (nLookup == 1)
{
CService addrIP("www.showmyip.com", 80, true);
if (addrIP.IsValid())
addrConnect = addrIP;
}

pszGet = "GET /simple/ HTTP/1.1\r\n"
"Host: www.showmyip.com\r\n"
"User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)\r\n"
"Connection: close\r\n"
"\r\n";

pszKeyword = NULL; // Returns just IP address
}

if (GetMyExternalIP2(addrConnect, pszGet, pszKeyword, ipRet))
return true;
}

return false;
}

void ThreadGetMyExternalIP(void* parg)
{
// Make this thread recognisable as the external IP detection thread
RenameThread("bitcoin-ext-ip");

CNetAddr addrLocalHost;
if (GetMyExternalIP(addrLocalHost))
{
printf("GetMyExternalIP() returned %s\n", addrLocalHost.ToStringIP().c_str());
AddLocal(addrLocalHost, LOCAL_HTTP);
}
}





void AddressCurrentlyConnected(const CService& addr)
{
addrman.Connected(addr);
}







CNode* FindNode(const CNetAddr& ip)
{
LOCK(cs_vNodes);
BOOST_FOREACH(CNode* pnode, vNodes)
if ((CNetAddr)pnode->addr == ip)
return (pnode);
return NULL;
}

CNode* FindNode(std::string addrName)
{
LOCK(cs_vNodes);
BOOST_FOREACH(CNode* pnode, vNodes)
if (pnode->addrName == addrName)
return (pnode);
return NULL;
}

CNode* FindNode(const CService& addr)
{
LOCK(cs_vNodes);
BOOST_FOREACH(CNode* pnode, vNodes)
if ((CService)pnode->addr == addr)
return (pnode);
return NULL;
}

CNode* ConnectNode(CAddress addrConnect, const char *pszDest)
{
if (pszDest == NULL) {
if (IsLocal(addrConnect))
return NULL;

// Look for an existing connection
CNode* pnode = FindNode((CService)addrConnect);
if (pnode)
{
pnode->AddRef();
return pnode;
}
}


/// debug print
printf("trying connection %s lastseen=%.1fhrs\n",
pszDest ? pszDest : addrConnect.ToString().c_str(),
pszDest ? 0 : (double)(GetAdjustedTime() - addrConnect.nTime)/3600.0);

// Connect
SOCKET hSocket;
if (pszDest ? ConnectSocketByName(addrConnect, hSocket, pszDest, GetDefaultPort()) : ConnectSocket(addrConnect, hSocket))
{
addrman.Attempt(addrConnect);

/// debug print
printf("connected %s\n", pszDest ? pszDest : addrConnect.ToString().c_str());

// Set to non-blocking
#ifdef WIN32
u_long nOne = 1;
if (ioctlsocket(hSocket, FIONBIO, &nOne) == SOCKET_ERROR)
printf("ConnectSocket() : ioctlsocket non-blocking setting failed, error %d\n", WSAGetLastError());
#else
if (fcntl(hSocket, F_SETFL, O_NONBLOCK) == SOCKET_ERROR)
printf("ConnectSocket() : fcntl non-blocking setting failed, error %d\n", errno);
#endif

// Add node
CNode* pnode = new CNode(hSocket, addrConnect, pszDest ? pszDest : "", false);
pnode->AddRef();

{
LOCK(cs_vNodes);
vNodes.push_back(pnode);
}

pnode->nTimeConnected = GetTime();
return pnode;
}
else
{
return NULL;
}
}

 

Link to comment
Share on other sites

@infoman,

Нет.

Сначала идет определение внешнего адреса.

Потом попытка коннекта к нодам, там не совсем разобрался что откуда, надо полностью смотреть код.

 

Никаких широковещательных запросов я там не увидел.

Что вы понимаете под широковещательным запросом?

Я так понимаю что это запрос отправленный на последний адрес сети.

Link to comment
Share on other sites

@BearA,я просто читал что от irc разработчики отказались

что касается кода то

для чего ему его определять?

для какой цели?

передать этот адрес внешней (зашитой в конфиг)ноде? не вижу смысла ибо нода сама может принимая запрос от нашего демона определить внешний ip нашего демона.

 

полный код вот он https://github.com/MaxGuevara/quark/blob/master/src/net.cpp

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Similar Topics

    • Взять займ под залог криптовалюты (криптозайм, Landing, Borrow, Loan). Какие есть варианты?

      Когда настают трудные времена, и стейблкоины с фиатом заканчиваются, можно либо продавать заначенную криптовалюту, либо одалживать под нее доллары и надеяться на лучшее.  Поговорим о втором пути. Какие есть варианты? Редакция текста 2024.03 Биржи — На https://www.binance.com/ru есть секция криптозаймов (в приложении: Binance Loans = Займы, проще всего их найти в кошелке под разделом Earn). (Обновите приложение, иначе корректно работать не будет). Рассказывать про не

      in Общий

    • Власти Голландии отказали разработчику Tornado Cash Алексею Перцеву в освобождении под залог

      Голландский суд отклонил ходатайство адвокатов Алексея Перцева об освобождении под залог и постановил оставить разработчика Tornado Cash под стражей в ожидании апелляционного суда. Апелляционный суд Нидерландов в Хертогенбосе отклонил ходатайство адвокатов Алексея Перцева Кит Ченг (Keith Cheng) и Джудит де Бур (Judith de Boer) об освобождении их подзащитного под залог, и оставил в силе решение о дальнейшем содержании разработчика Tornado Cash под домашним арестом.   Несмотря на утвер

      in Новости криптовалют

    • Находящаяся под расследованием криптокомпания NGS Crypto сменила название на Hiddup

      Комиссия по ценным бумагам и инвестициям Австралии (ASIC) предупредила общественность, что компания NGS Crypto, в отношении которой ведется расследование, провела ребрендинг и изменила название на Hiddup. Финансовый регулятор отметил, что с 1 июля 2024 года компания NGS Crypto и ее веб-сайт получат новое название — Hiddup. Это произошло после того, как ASIC начала расследование в отношении NGS Crypto и ее сотрудников, а также связанных с ней компаний NGS Digital Pty LTD и NGS Group Limited.

      in Новости криптовалют

    • Sony Group перезапустит криптобиржу Amber Japan под новым брендом S.BLOX

      Транснациональная корпорация Sony Group проводит ребрендинг криптовалютной биржи Amber Japan, которую она приобрела в августе прошлого года. Для этого компания зарегистрировала новый товарный знак S.BLOX. Базирующаяся в Токио компания S.BLOX будет оказывать поддержку профильным подразделениям Sony Group для расширения возможностей корпорации на рынке криптовалютной торговли. В рамках ребрендинга команда S.BLOX проведет углубленное обновление пользовательского интерфейса, а также запустит но

      in Новости криптовалют

    • Житель Тайваня сделал ставку на криптототализаторе Polymarket и попал под суд

      Прокуратура Китайской Республики Тайвань обвинила одного из гражданин страны в умышленном нарушении закона о выборах президента. С 12 по 17 декабря прошлого года мужчина по фамилии Чэнь (Chen, имя не раскрывается) неоднократно использовал платформу сервиса предсказаний Polymarket, чтобы сделать ставки на исход президентских выборов и позицию Демократической прогрессивной партии. В общей сложности тайванец сделал на платформе криптототализатора ставки на $500, номинированные в стейблкоинах U

      in Новости криптовалют

×
×
  • Create New...