Bitcoin Forum

Local => Кодеры => Topic started by: Ninazu on March 14, 2013, 05:29:49 AM



Title: Make MinGw Bitcoin Src
Post by: Ninazu on March 14, 2013, 05:29:49 AM
Камнями не бросать! До этого не сталкивался с MinGw.
Cкачал сорцы и компоненты.
Quote
btc_0.8.0
boost_1_53_0 (mgw47-mt-sd-1_53)
db-5.3.21.NC
openssl-1.0.1e
mingw 0.5b-20120426-1
MAKE = /c/MinGW/bin/mingw32-make.exe
PATH + c:\MinGW\msys\1.0\bin;c:\MinGW\bin

После часика танца с бубном и вычитывания гугла. Скомпилировал все библиотеки и настроил сборку.
С OpenSSL и Boost проблем почти не было. А вот с Berkeley DB пришлось повозиться. Хоть в конечном итоге созбать библиотеки получилось, но видимо не до конца. Пробовал несколько версий, результата не дало.
Собсвтенно ошибка сама
Code:
C:\BITCOIN>make -f makefile.mingw
g++ -mthreads -O2 -w -Wall -Wextra -Wformat -Wformat-security -Wno-unused-parame
ter -g -DWIN32 -D_WINDOWS -DBOOST_THREAD_USE_LIB -DBOOST_SPIRIT_THREADSAFE -DUSE
_IPV6=1 -I/c/BITCOIN/leveldb/include -I/c/BITCOIN/leveldb/helpers -I"/c/BITCOIN"
 -I"/usr/local/include" -Wl,--dynamicbase -Wl,--nxcompat -Wl,--large-address-awa
re -o bitcoind.exe -L"/c/BITCOIN/leveldb" -L"/usr/local/lib" leveldb/libleveldb.
a obj/alert.o obj/version.o obj/checkpoints.o obj/netbase.o obj/addrman.o obj/cr
ypter.o obj/key.o obj/db.o obj/init.o obj/irc.o obj/keystore.o obj/main.o obj/ne
t.o obj/protocol.o obj/bitcoinrpc.o obj/rpcdump.o obj/rpcnet.o obj/rpcmining.o o
bj/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 -l leveldb -l memenv -l boost_system-mgw47-mt-sd-1_53 -l bo
ost_filesystem-mgw47-mt-sd-1_53 -l boost_program_options-mgw47-mt-sd-1_53 -l boo
st_thread-mgw47-mt-sd-1_53 -l boost_chrono-mgw47-mt-sd-1_53 -l db_cxx -l ssl -l
crypto -l kernel32 -l user32 -l gdi32 -l comdlg32 -l winspool -l winmm -l shell3
2 -l comctl32 -l ole32 -l oleaut32 -l uuid -l rpcrt4 -l advapi32 -l ws2_32 -l ms
wsock -l shlwapi
c:/mingw/bin/../lib/gcc/mingw32/4.7.2/../../../libdb_cxx.a(os_pid.o):os_pid.c:(.
text+0x24): undefined reference to `_imp__pthread_self'
collect2.exe: ошибка: выполнение ld завершилось с кодом возврата 1
make: *** [bitcoind.exe] Error 1





Title: Re: Make MinGw Bitcoin Src
Post by: giv on March 14, 2013, 06:28:09 AM
Если владеешь линуксом, собирай кросскомпиляцией под линуксом - это реально проще. У меня есть скрипты для кросскомпиляции https://github.com/VirtualDestructor/bitcoin-qt-i2p (https://github.com/VirtualDestructor/bitcoin-qt-i2p). Файлы 1.env-setup.sh, 2.build-deps.sh, 3.build-linux-mingw.sh.


Title: Re: Make MinGw Bitcoin Src
Post by: Ninazu on March 14, 2013, 02:46:41 PM
Спасибо! Качаю Убунту! Поставлю на виртуалку. Хоть опыта не особо, но думаю справлюсь с MinGW же подружился как-то) Хотя впервые с ним столкнулся вчера)


Title: Re: Make MinGw Bitcoin Src
Post by: giv on March 14, 2013, 05:29:18 PM
Тогда после установки линукса, ставь mingw32 командой
Code:
sudo apt-get install mingw32
1 и 2 скрипт нужно запускать только при первой компиляции, все последующие (пере)сборки можно делать только скриптом 3.
1 и 2 скрипт пойдут без изменений, а 3 придется немного допилить, или повторять мою структуру каталогов.
Мои скрипты ищут исходники в ${WORKSPACE}/bitcoin-qt/src, где ${WORKSPACE} - это директория, где лежат скрипты.
Результаты работы первых двух скриптов кладутся в ${WORKSPACE}/dependencies.
Результаты 3-его (т.е. сами bitcoin-qt.exe и bitcoind.exe) кладутся в ${WORKSPACE}/release.
Еще в 3 скрипте можно использовать многопоточную компиляцию, что сильно ускоряет сборку на многоядерных процессорах
Code:
./3.build-linux-mingw.sh --threads=<n>
где n - количество потоков (обычно = числу ядер). Но многопоточная компиляция жрет много памяти, так что используй осторожно.


Title: Re: Make MinGw Bitcoin Src
Post by: Ninazu on March 15, 2013, 02:07:33 AM
Уф! К линуксу еще привыкнуть нужно)

Запустилось с второй попытки. Первая почему-то оказалась неудачной. Удалил папку, продел все шаги заново. Запустилось.
Рад как слон!) Спасибо!


Title: Re: Make MinGw Bitcoin Src
Post by: Storan on June 19, 2013, 07:05:11 PM
Спасибо и от меня. Действительно самый простой, и главное безотказно работающий способ.
Уважаемый giv. А для компиляции под win64 скрипты реально приспособить? Вот этот комментарий в первом скрипте #ENABLE_PLATFORMS=("mingw32 mingw64 linux64") - удачная попытка была?


Title: Re: Make MinGw Bitcoin Src
Post by: giv on June 19, 2013, 07:48:09 PM
Основу этих скриптов я стянул у какого-то форка, когда сам пытался собрать под винду. Сейчас даже не вспомню с какого. Поэтому скрипты, строго говоря, не мои, я их немного пере/доделал под свои нужды.
Строка ENABLE_PLATFORMS=("mingw32 mingw64 linux64") была в оригинале. Поскольку мне нужна была только mingw32 платформа, остальные я закомментировал. Теоретически под Mingw64 собрать можно, должно быть все аналогично Mingw32, но я не пробовал. Я решил не заморачиваться на 64-битную винду, т.к. даже разработчики оригинального биткоина релизят бинарники только для х32 винды.