Re: Issues building bitcoin on Windows 7

参加者: LobsterMan

(MSVC++はまだ当面諦めている。再フォーマットしたばかりで、Visual Studioとその仲間でシステムを膨れさせたくないので……) これは puddinpop がリリースしたソース bitcoin-CUDA-svn153-src-gpl をビルドしようとしている試みだ。

使用している boost のバージョン(1.44)と mingw 4.5 を反映するため、また絶対パス以外もサポートするため、makefile にいくつかの変更を加えた。現在作業中のものは以下のとおりだ:

Code:# Copyright (c) 2009-2010 Satoshi Nakamoto

Distributed under the MIT/X11 software license, see the accompanying

file license.txt or http://www.opensource.org/licenses/mit-license.php.

INCLUDEPATHS=
-I”./boost”
-I”./db/build_unix”
-I”./openssl/include”
-I”./wxwidgets/lib/gcc_lib/mswud”
-I”./wxwidgets/include”

LIBPATHS=
-L”./boost/stage/lib”
-L”./db/build_unix”
-L”./openssl/out”
-L”./wxwidgets/lib/gcc_lib”

WXLIBS=
-l wxmsw29ud_html -l wxmsw29ud_core -l wxmsw29ud_adv -l wxbase29ud -l wxtiffd -l wxjpegd -l wxpngd -l wxzlibd

LIBS=
-l libboost_system-mgw45-mt-d-1_44
-l libboost_filesystem-mgw45-mt-d-1_44
-l libboost_program_options-mgw45-mt-d-1_44
-l libboost_thread-mgw45-mt-d-1_44
-l db_cxx
-l eay32
-l kernel32 -l user32 -l gdi32 -l comdlg32 -l winspool -l winmm -l shell32 -l comctl32 -l ole32 -l oleaut32 -l uuid -l rpcrt4 -l advapi32 -l ws2_32 -l shlwapi

DEFS=-DWIN32 -D__WXMSW__ -D_WINDOWS -DNOPCH DEBUGFLAGS=-g -D__WXDEBUG__ CFLAGS=-mthreads -O2 -w -Wno-invalid-offsetof -Wformat $(DEBUGFLAGS) $(DEFS) $(INCLUDEPATHS) HEADERS=headers.h strlcpy.h serialize.h uint256.h util.h key.h bignum.h base58.h
script.h db.h net.h irc.h main.h rpc.h uibase.h ui.h noui.h init.h

OBJS=
obj/util.o
obj/script.o
obj/db.o
obj/net.o
obj/irc.o
obj/main.o
obj/rpc.o
obj/init.o
cryptopp/obj/sha.o
cryptopp/obj/cpu.o

all: bitcoin.exe

obj/%.o: %.cpp $(HEADERS) g++ -c $(CFLAGS) -DGUI -o $@ $<

cryptopp/obj/%.o: cryptopp/%.cpp g++ -c $(CFLAGS) -O3 -DCRYPTOPP_X86_ASM_AVAILABLE -o $@ $<

obj/ui_res.o: ui.rc rc/bitcoin.ico rc/check.ico rc/send16.bmp rc/send16mask.bmp rc/send16masknoshadow.bmp rc/send20.bmp rc/send20mask.bmp rc/addressbook16.bmp rc/addressbook16mask.bmp rc/addressbook20.bmp rc/addressbook20mask.bmp windres $(DEFS) $(INCLUDEPATHS) -o $@ -i $<

bitcoin.exe: $(OBJS) obj/ui.o obj/uibase.o obj/ui_res.o g++ $(CFLAGS) -mwindows -Wl,—subsystem,windows -o $@ $(LIBPATHS) $^ $(WXLIBS) $(LIBS)

obj/nogui/%.o: %.cpp $(HEADERS) g++ -c $(CFLAGS) -o $@ $<

bitcoind.exe: $(OBJS:obj/%=obj/nogui/%) obj/ui_res.o g++ $(CFLAGS) -o $@ $(LIBPATHS) $^ $(LIBS)

clean: -del /Q obj* -del /Q obj\nogui* -del /Q cryptopp\obj* -del /Q headers.h.gch

これまでのところ、cmd.exeから ‘mingw32-make -f makefile.mingw bitcoind.exe’ を呼び出しても、MinGWシェルから ‘make -f makefile.mingw bitcoind.exe’ を呼び出しても、同じ問題が出る。boost_program_options のところまで進んで、以下のエラーで終了する:

Code:C:\Users[username]\Desktop\bitcoin-CUDA-svn153-src-gpl/./boost/boost/program_options/eof_iterator.hpp:75: undefined reference to boost::program_options::detail::common_config_file_iterator::get()' obj/nogui/util.o: In function basic_config_file_iterator’: C:\Users[username]\Desktop\bitcoin-CUDA-svn153-src-gpl/./boost/boost/program_options/detail/config_file.hpp:147: undefined reference to boost::program_options::detail::common_config_file_iterator::common_config_file_iterator(std::set<std::string, std::less<std::string>, std::allocator<std::string> > const&, bool)' C:\Users\[username]\Desktop\bitcoin-CUDA-svn153-src-gpl/./boost/boost/program_options/detail/config_file.hpp:150: undefined reference to boost::program_options::detail::common_config_file_iterator::get()’ collect2: ld returned 1 exit status mingw32-make: *** [bitcoind.exe] Error 1 今ちょっと行き詰まっていて、助けがあれば本当に助かる(boost をビルドしたときに何か失敗した可能性はあるだろうか?) 😊