Перейти к содержанию

Сборка bitcoid под Linux


SanDocan88

Рекомендуемые сообщения

Пытаюсь собрать 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 то же самое.

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

 
Ссылка на комментарий
Поделиться на другие сайты

Пытаюсь собрать 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 то же самое.

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

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

Ссылка на комментарий
Поделиться на другие сайты

 

 

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

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

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

Ссылка на комментарий
Поделиться на другие сайты

 

Пытаюсь собрать 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

Ссылка на комментарий
Поделиться на другие сайты

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

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, поставьте её наконец.

Изменено пользователем ggss
Ссылка на комментарий
Поделиться на другие сайты

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

sudo apt-get install gitsudo apt-get install build-essential libboost-all-dev libcurl4-openssl-dev libdb5.1-dev libdb5.1++-dev
Изменено пользователем pendalf2008
Ссылка на комментарий
Поделиться на другие сайты

Я бы сказал

 

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
Изменено пользователем mylem
Ссылка на комментарий
Поделиться на другие сайты

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

Ссылка на комментарий
Поделиться на другие сайты

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

 

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

Ссылка на комментарий
Поделиться на другие сайты

 

 

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

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

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

Ссылка на комментарий
Поделиться на другие сайты

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

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

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

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

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

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

Изменено пользователем infoman
Ссылка на комментарий
Поделиться на другие сайты

@infoman,

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

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

Ссылка на комментарий
Поделиться на другие сайты

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

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

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

Ссылка на комментарий
Поделиться на другие сайты

@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;
}
}

 

Ссылка на комментарий
Поделиться на другие сайты

@infoman,

Нет.

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

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

 

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

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

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

Ссылка на комментарий
Поделиться на другие сайты

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

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

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

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

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

 

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

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
  • Similar Topics

    • Топ-менеджер Binance Надим Анджарвалла смог сбежать из-под ареста в Нигерии

      Один из высокопоставленных руководителей Binance, задержанных в Нигерии местными властями, сбежал из-под стражи и покинул страну. Власти африканской страны пытаются выбить у биржи $10 млрд как компенсацию за уклонении от налогов и обвал национальной валюты. О побеге Надима Анджарваллы (Nadeem Anjarwalla) первым сообщило местное издание Premium Times со ссылкой на знакомые с ситуацией источники. Топ-менеджер крупнейшей криптобиржи мира скрылся 22 марта из гостевого дома в Абудже, где он и ег

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

    • QCP Capital: Биткоин под угрозой из-за инфляции в США

      Аналитики QCP Capital заявили, что биткоин ожидает падение, поскольку уровень инфляции в США продолжает расти. Они также указали на снижение притока средств в спотовые ETF на биткоин. Переход показателя в «красную» зону вызвал просадку стоимости первой криптовалюты ниже $61 000. Дополнительное давление на биткоин оказывает инфляция, которая находится выше целевого уровня Федеральной резервной системы (ФРС) США в 2%.   Эксперты QCP Capital считают, что на фоне этого ФРС может отказать

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

    • Wall Street Journal: Суд Нигерии оставил топ-менеджеров Binance под стражей

      Источники издания Wall Street Journal (WSJ) рассказывают, что нигерийский суд оставил задержанных полмесяца назад топ-менеджеров крупнейшей криптовалютной биржи Binance под стражей как минимум до 20 марта. Бывший следователь отдела по киберпреступлениям налоговой службы США Тигран Гамбарян (Tigran Gambaryan) и региональный менеджер по Африке Надим Анджарвалла (Nadeem Anjarwalla) удерживаются властями Нигерии с конца февраля.   Топ-менеджеры прибыли в город Абуджа 25 февраля по приглаш

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

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

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

      в Общий

    • Гонконгский регулятор предупредил о маскирующихся под криптобиржу MEXC мошенниках

      Комиссия по ценным бумагам и фьючерсам Гонконга (SFC) предупредила общественность о мошеннических организациях, выдающих себя за известную криптовалютную биржу MEXC. SFC сообщила, что в ходе расследования деятельности нелегальных поставщиков услуг виртуальных активов, ведомство совместно с правоохранительными органами выявило около восьми мошеннических веб-сайтов. Все они содержали название «MEXC» в своих доменных именах, например, «mexczx.icu» и «mexczx.co».   Мошенники обманом убеж

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

×
×
  • Создать...