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

Сборка 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

    • https://www.senderdao.io/ airdrop от кошелька, Binance под боком

      Надо фармить, бинанс под боком    Проект Sender сейчас запустил фарм поинтов, и также подтвердил что будет дроп    Что делать:   Качаем кошелек На этом сайте подключаем этот кошелек Фармим поинты   От уровня вашего твиттера, будет зависеть сколько поинтов вы нафармите, кошелек sender можете востановить с приложения hot wallet от NEAR, там таже сеть!   Первый этап этого захватывающего события продлится с 3 апреля по 3 мая 2024 года.

      в Раздачи монет

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

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

      в Общий

    • Сбежавшего из-под стражи топ-менеджера Binance выследили в Кении

      Власти Нигерии выследили в Кении сбежавшего из-под стражи директора биржи Binance в Западной и Восточной Африке Надима Анджарваллу. Как сообщают источники в администрации президента Кении, Комиссия по экономическим и финансовым преступлениям Нигерии, Интерпол и полицейская служба Кении ведут переговоры об экстрадиции Надима Анджарваллы (Nadeem Anjarwalla) обратно в Нигерию.   Напомним, что Анджарвалла смог покинуть Нигерию 22 марта 2024 года, предъявив кенийский паспорт на международ

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

    • Bitget запускает стейкинг USDT под 100% годовых для новых пользователей

      С 8 по 18 апреля новые пользователи Bitget могут поместить USDT в фиксированный стейкинг по 100% годовых на Bitget Earn. Количество участников акции ограничено, возможность подписки на стейкинг закроется 18 апреля в 12:00 по московскому времени. Лимит подписки на одного пользователя составляет 200 USDT на период до трех дней.   Фиксированная подписка на 100% APR USDT по истечении срока будет автоматически переведена в гибкие сбережения — на USDT будут продолжать начисляться проценты.

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

    • Bloomberg: Бывшие друзья Сэма Бэнкман-Фрида тоже пойдут под суд

      После вынесения обвинительного приговора бывшему руководителю рухнувшей криптобиржи FTX внимание следствия переключилось на его ближайших соратников, которые выступали против опального босса в суде. Суд Южного округа Нью-Йорка оценит меру ответственности по делу о многомиллиардном мошенничестве FTX Group Кэролайн Эллисон (Caroline Ellison), Нишада Сингха (Nishad Singh) и Гэри Вана (Gary Wang), узнали источники Bloomberg. Все трое бывших близких друзей Сэма Бэнкмана-Фрида признали себя вино

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

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