Jump to content

Сборка bitcoid под Linux


SanDocan88

Recommended Posts

Posted

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

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

 
Posted

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

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

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

Posted

 

 

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

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

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

Posted

 

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

Posted (edited)

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

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
Posted (edited)

Ясно. Я собирал пулл 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
Posted (edited)

Я бы сказал

 

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
Posted

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

Posted

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

 

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

Posted

 

 

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

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

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

Posted (edited)

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

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

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

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

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

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

Edited by infoman
Posted

@infoman,

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

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

Posted

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

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

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

Posted

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

 

Posted

@infoman,

Нет.

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

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

 

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

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

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

Posted

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

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

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

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

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

 

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

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

    • Сбербанк собирается выдавать кредиты под залог криптовалюты

      Крупнейший в России госбанк Сбер анонсировал кредиты под залог криптоактивов. Банк намерен принимать в качестве обеспечения биткоины, эфир и долларовые стейблкойны USDT американской компании Tether. О планах сообщил заместитель председателя правления Сбера Анатолий Попов в интервью ТАСС. По словам топ‑менеджера, финансовая организация уже подготовилась к работе с криптовалютами. Запуск обновленных продуктов станет возможен после того, как 1 сентября вступит в силу правительственный закон о

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

    • SMACK PAY - платежное решение по QR СБП (НСПК) под обменники (exchange)

      Доброго дня! Команда SMACK PAY разработала НОВОЕ платёжное решение ИСКЛЮЧИТЕЛЬНО под обменники.   ⚠️ Эквайринг, не мультитрансфер и не ИП !   ⛔ Никаких верефикаций, для подключения просто напишите нашему менеджеру в телеграм:   @SMACKPAY / @SmackPayments     Ваши клиенты смогут оплачивать рублями по СБП , мы выводим ваши средства в USDT (TRC20) каждый будний день.    • Метод: СБП QR (НСПК)  • Интеграция: страница оплаты  • Ком

      in Платежные решения

    • Основателя BitRiver отправили под стражу по делу о мошенничестве

      В среду, 29 июля, Замоскворецкий районный суд Москвы ужесточил меру пресечения основателю крупнейшей в России майнинговой компании BitRiver Игорю Рунцу. Бизнесмен переведен из-под домашнего ареста в следственный изолятор — после предъявления обвинения в мошенничестве на 1 млрд рублей. Игорь Рунец должен провести в СИЗО как минимум два месяца, пока будет вестись следствие. Бизнесмену предъявлено обвинение по части 4 статьи 159 УК РФ — «мошенничество в особо крупном размере, совершенное орган

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

    • Metaplanet готовит платформу для запуска облигаций под залог биткоина

      Японская инвестиционная компания Metaplanet, которая входит в тройку крупнейших публичных корпоративных держателей биткоина, намерена использовать недавно приобретенную брокерскую фирму для запуска корпоративных облигаций, обеспеченных биткоином. О планах узнали аналитики компании Benchmark. Созданная на базе японской инвесткомпании брокерская структура не будет использоваться просто как канал финансирования собственных покупок биткоина, то есть речь не идет исключительно об облигациях Meta

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

    • [JD-PARTNERS] Набор байеров/воркеров под UZB (Crypto-биржи, Инвесты, iGaming) | Выплаты в USDT

      Привет, комьюнити bits.media! Команда JD-PARTNERS в поиске соло-байеров, медиакоманд и трафферов для масштабирования работы по ГЕО Узбекистан (UZB). Предоставляем проверенные приватные продукты под крипто-, финансовый и гемблинг-сегмент с полной технической поддержкой. ⚡ Рабочие вертикали: Инвестиционные платформы (обработочный трафик / воронки) Crypto & FinTech биржи iGaming сегмент (обработка / схемы) 🛠 Что закрывает JD-PA

      in Работа

×
×
  • Create New...