Pages:
Author

Topic: Issues building bitcoin on Windows 7 - page 2. (Read 10971 times)

LZ
legendary
Activity: 1722
Merit: 1072
P2P Cryptocurrency
September 30, 2010, 02:31:19 AM
#9
I think you should ask eurekafag about it. He has successfully compiled the CUDA version for Linux. Smiley
member
Activity: 73
Merit: 10
September 30, 2010, 12:11:06 AM
#8
(still given up with MSVC++ for now, just reformatted and don't want to go bloating up my system with visual studio and friends for now...)
This is my attempt to build the source that puddinpop has released... bitcoin-CUDA-svn153-src-gpl

I've made some changes to the makefile to reflect the version of boost that i'm using (1.44) and mingw 4.5 and also to support not-absolute-paths; here is what I'm working with at present:

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



So far, calling both 'mingw32-make -f makefile.mingw bitcoind.exe' from cmd.exe or 'make -f makefile.mingw bitcoind.exe' from the MinGW shell are giving me the same problems. It gets as far as the boost_program_options, and then exits with the following errors:

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::allocator > 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

Kind of stuck here at the moment and any help would be appreciated (is it possible something failed when I was building boost?)  Smiley
newbie
Activity: 53
Merit: 0
September 24, 2010, 06:05:30 AM
#7
My CMake version at http://bitbucket.org/dkaparis/bitcoin-cmake/ can build on windows using MSVC, both IDE project and command line nmake. You'll only need CMake.
member
Activity: 73
Merit: 10
September 21, 2010, 07:07:46 PM
#6
I've given up for the time being with VC and have been having a bit more success with MinGW, I will report back if I decide to give VC a try in the future
founder
Activity: 364
Merit: 7248
September 19, 2010, 01:46:46 PM
#5
The lines it's tripping on:
Code:
ERROR extern map mapAddressBook;
ERROR extern CCriticalSection cs_mapAddressBook;
ERROR extern vector vchDefaultKey;
OK extern bool fClient;
OK extern int nBestHeight;


OK extern unsigned int nWalletDBUpdated;
ERROR extern DbEnv dbenv;

So it's acting like nothing is defined, not even map and vector.

Yet, db.h is included by headers.h (and only there, nowhere else) which includes vector, map, util.h and everything before db.h.

Is VC trying to use precompiled headers and screwing it up?  Could there be some leftover precompiled header files in your directory from previously failed attempts that it's finding and using?

There's an installer package now that makes it really easy to install MinGW.  Don't use the latest version 4.5.0, use a few versions back like 4.4.1 (1.908.0) or 1.812.0.  A setup program completely installs everything, it's not hard like it used to be.  I think the only thing I had to do was rename make*.exe something to make.exe.
http://tdm-gcc.tdragon.net/

Off topic, but: It would be nice if someone would hack on getting tcatm's 4-way 128-bit SSE2 code working on Windows.  There's something with MinGW's optimisation, I'm not sure but maybe a problem with 16-byte alignment on the stack, that makes it segfault.  With some fiddling, I was able to get his code to work in a test program, but not in Bitcoin itself for some reason.
member
Activity: 73
Merit: 10
September 16, 2010, 09:48:24 PM
#4
Ok...so trying to build from the commandline with nmake is still giving me the same problems:


Code:
c:\Users\[myusername]\Desktop\bitcoin-0.3.12\src>nmake /f makefile.vc

Microsoft (R) Program Maintenance Utility Version 10.00.30319.01
Copyright (C) Microsoft Corporation.  All rights reserved.

        cl /c /nologo /MDd /EHsc /GR /Zm300 /Zi /D__WXDEBUG__ /DWIN32 /D__WXMSW__ /D_WINDOWS /DNOPCH /I"/boost"  /I"/db/build_windows"
 /I"/openssl/include"  /I"/wxwidgets/lib/vc_lib/mswud"  /I"/wxwidgets/include" /DGUI /Foobj\util.obj util.cpp
util.cpp
c:\users\[myusername]\desktop\bitcoin-0.3.12\src\db.h(15) : error C2143: syntax error : missing ';' before '<'
c:\users\[myusername]\desktop\bitcoin-0.3.12\src\db.h(15) : error C4430: missing type specifier - int assumed. Note: C++ does not support defau
lt-int
c:\users\[myusername]\desktop\bitcoin-0.3.12\src\db.h(16) : error C2146: syntax error : missing ';' before identifier 'cs_mapAddressBook'
c:\users\[myusername]\desktop\bitcoin-0.3.12\src\db.h(16) : error C4430: missing type specifier - int assumed. Note: C++ does not support defau
lt-int
c:\users\[myusername]\desktop\bitcoin-0.3.12\src\db.h(16) : error C4430: missing type specifier - int assumed. Note: C++ does not support defau
lt-int
c:\users\[myusername]\desktop\bitcoin-0.3.12\src\db.h(17) : error C2143: syntax error : missing ';' before '<'
c:\users\[myusername]\desktop\bitcoin-0.3.12\src\db.h(17) : error C4430: missing type specifier - int assumed. Note: C++ does not support defau
lt-int
c:\users\[myusername]\desktop\bitcoin-0.3.12\src\db.h(23) : error C2146: syntax error : missing ';' before identifier 'dbenv'
c:\users\[myusername]\desktop\bitcoin-0.3.12\src\db.h(23) : error C4430: missing type specifier - int assumed. Note: C++ does not support defau
lt-int


Any additional advice would be appreciated...  Undecided


I think that the C4430 error can be ignored by adding a #pragma warning(disable:4430) to headers.h, but the other ones appear to be more serious

It looks like the C2143 is sometimes caused by problems with #includes, but since I am just using the files that were distributed with the source...I would assume all are functional? Maybe it is something about using vs2010 that is causing the problems?
legendary
Activity: 1540
Merit: 1002
September 14, 2010, 02:28:48 PM
#3
You should build using the nmake command from the visual studio command prompt as described in the information distributed with the source.

There's a makefile.mingw, and although I haven't tried yet, I'll probably take a stab at windows building for my cuda miner. Can I not use this?
newbie
Activity: 15
Merit: 0
September 14, 2010, 01:58:07 PM
#2
You should build using the nmake command from the visual studio command prompt as described in the information distributed with the source.
member
Activity: 73
Merit: 10
September 14, 2010, 07:14:25 AM
#1
I've been playing around with visual studio (2010) trying to build bitcoin from the source that is included in the win32 zip archive. I created a new makefile project and imported the makefile, acquired the boost, wxwidgets, and the openssl sources, and a few other files which were reported missing when I would try to build. I got as far as the build log reporting that it needed iostream.h, so I went and found a copy of that from libstdc++. Now, after trying to build with iostream.h located in my includes directory, I am getting loads of errors that look like this:

Code:
1>------ Build started: Project: bitcoin_test, Configuration: Debug Win32 ------
1>Build started 9/14/2010 08:07:14.
1>InitializeBuildStatus:
1>  Touching "Debug\bitcoin_test.unsuccessfulbuild".
1>ClCompile:
1>  util.cpp
1>c:\users\[myusername]\desktop\bitcoin-0.3.12\src\db.h(15): error C2143: syntax error : missing ';' before '<'
1>c:\users\[myusername]\desktop\bitcoin-0.3.12\src\db.h(15): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\[myusername]\desktop\bitcoin-0.3.12\src\db.h(16): error C2146: syntax error : missing ';' before identifier 'cs_mapAddressBook'
1>c:\users\[myusername]\desktop\bitcoin-0.3.12\src\db.h(16): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\[myusername]\desktop\bitcoin-0.3.12\src\db.h(16): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\[myusername]\desktop\bitcoin-0.3.12\src\db.h(17): error C2143: syntax error : missing ';' before '<'
1>c:\users\[myusername]\desktop\bitcoin-0.3.12\src\db.h(17): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\[myusername]\desktop\bitcoin-0.3.12\src\db.h(23): error C2146: syntax error : missing ';' before identifier 'dbenv'
1>c:\users\[myusername]\desktop\bitcoin-0.3.12\src\db.h(23): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\[myusername]\desktop\bitcoin-0.3.12\src\db.h(23): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\[myusername]\desktop\bitcoin-0.3.12\src\db.h(34): error C2143: syntax error : missing ';' before '*'
1>c:\users\[myusername]\desktop\bitcoin-0.3.12\src\db.h(34): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\[myusername]\desktop\bitcoin-0.3.12\src\db.h(34): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\[myusername]\desktop\bitcoin-0.3.12\src\db.h(35): error C2146: syntax error : missing ';' before identifier 'strFile'
1>c:\users\[myusername]\desktop\bitcoin-0.3.12\src\db.h(35): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\[myusername]\desktop\bitcoin-0.3.12\src\db.h(35): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\[myusername]\desktop\bitcoin-0.3.12\src\db.h(36): error C2143: syntax error : missing ';' before '<'
1>c:\users\[myusername]\desktop\bitcoin-0.3.12\src\db.h(36): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\[myusername]\desktop\bitcoin-0.3.12\src\db.h(36): error C2238: unexpected token(s) preceding ';'

This has happened with 2 different versions of iostream.h (tried changing to in db.h also), and if I remove iostream.h from my includes directory it simply reports that file is missing and doesn't give hundreds of lines of errors like the above. I haven't modified any files at all, I am just trying to get the project to build in a windows environment right now...

I am sort of stuck here and haven't been able to figure out what the problem is. Admittedly I don't entirely know what I'm doing (I don't have a whole lot of experience with C++ in windows), but I was wondering if anyone has any ideas what my problem might be.
Pages:
Jump to: