Author

Topic: Unable to compile bitcoin (Read 1322 times)

newbie
Activity: 11
Merit: 0
July 17, 2011, 07:44:26 AM
#6
I have tried compiling using the default instructions under Ubuntu and was not able to succeed.
newbie
Activity: 10
Merit: 0
July 17, 2011, 02:05:30 AM
#5
I have now tried with both db-5.1.19.tar.gz and db-5.2.28.tar.gz just to see if 5.1.19 was a too old version of the library. It doesn't seem to make any difference -- the compiler error is the exact same.

Could anyone please list all the dependencies of bitcoin? Or is that stated somewhere in the documentation, have I managed to overlook it? It would be a great help to know exactly what the dependencies/requirements of bitcoin are in order for me to make it work. Am I really the only one that has this problem?
newbie
Activity: 10
Merit: 0
July 16, 2011, 02:54:14 PM
#4
I might be making some progress here, I'm not sure.

I've been trying to follow the guide at (the PDF file) http://forums.atomicmpc.com.au/index.php?showtopic=39944
I installed all of the dependencies and then tried to use the Makefile presented in the document. This however only resulted in errors from make -- not errors from the compiler. With an unspecified rule.

I was unable to modify the Makefile trivially so I made more than just a few modifications, this is my Makefile for bitcoin now:

Code:
DEPSDIR=/tmp/bitcoin/deps

INCLUDEPATHS= -I"$(DEPSDIR)/include"
LIBPATHS= -L"$(DEPSDIR)/lib"
WXLIBS=$(shell $(DEPSDIR)/bin/wx-config --libs --static)
WXBASELIBS=$(shell $(DEPSDIR)/bin/wx-config --libs base --static)

LIBS= -dead_strip \
 $(DEPSDIR)/lib/libdb_cxx-4.8.a \
 $(DEPSDIR)/lib/libboost_system.a \
 $(DEPSDIR)/lib/libboost_filesystem.a \
 $(DEPSDIR)/lib/libcrypto.a

WXDEFS=$(shell $(DEPSDIR)/bin/wx-config --cxxflags) -DNOPCH
DEBUGFLAGS=-g -DwxDEBUG_LEVEL=0
CFLAGS=-O2 -Wno-invalid-offsetof -Wformat $(DEBUGFLAGS) $(WXDEFS) $(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 init.h sha.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

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

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

bitcoin : $(OBJS) obj/ui.o obj/uibase.o
g++ $(CFLAGS) -o $@ $(LIBPATHS) $^ $(WXLIBS) $(LIBS)

headers.h.gch : headers.h $(HEADERS)
g++ $(CFLAGS) -c $<

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

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

clean :
-rm -f bitcoin bitcoind
-rm -f obj/*
-rm -f obj/nogui/*
-rm -f headers.h.gch

This at least does not stop prior to compilation even starting (unlike the previously mentioned Makefile). However I get the following compiler errors:

Code:
ui.cpp:19: error: expected constructor, destructor, or type conversion before '(' token
ui.cpp:22: error: expected constructor, destructor, or type conversion before '*' token
ui.cpp:24: error: 'wxLocale' does not name a type
...
newbie
Activity: 10
Merit: 0
July 15, 2011, 11:46:21 AM
#3

You might need libdb4.8++-dev or something like it.


Thank you for the help.

I've been trying this for a few hours now. I downloaded libdb4.8-dev_4.8.24-1ubuntu1_i386.deb from http://packages.ubuntu.com/lucid/i386/libdb4.8-dev/download. Converted it to TGZ with Alien and installed it, then finally ran ldconfig.

The compilation still fails, but the compiler added one new line:

Code:
/usr/include/db_cxx.h:796: error: 'DB_XIDDATASIZE' was not declared in this scope

The full compiler error is:

Code:
g++ -c -O2 -Wno-invalid-offsetof -Wformat -g -D__WXDEBUG__ -DNOPCH -DFOURWAYSSE2 -DUSE_SSL -DUSE_UPNP=0 -I/usr/local/lib/wx/include/gtk2-unicode-2.9 -I/usr/local/include/wx-2.9 -D_FILE_OFFSET_BITS=64 -DWXUSINGDLL -D__WXGTK__ -pthread -DGUI -o obj/util.o util.cpp
In file included from headers.h:43,
                 from util.cpp:4:
/usr/include/db_cxx.h:796: error: 'DB_XIDDATASIZE' was not declared in this scope
In file included from main.h:11,
                 from headers.h:96,
                 from util.cpp:4:
db.h: In member function 'bool CDB::Exists(const K&)':
db.h:149: error: 'class Db' has no member named 'exists'
make: *** [obj/util.o] Error 1

Any ideas?
newbie
Activity: 12
Merit: 0
July 15, 2011, 04:30:00 AM
#2
Hello everyone,
I thought I would try this [bitcoin] out but I am unable to compile the latest bitcoin client (bitcoin-0.3.24).

I'm using 32-bit Slackware 13.1.0. When I initially attempted to compile I got errors related to wxWidgets being missing. This was resolved by compiling and installing wxWidgets. However I still get the following error:

Code:
g++ -c -O2 -Wno-invalid-offsetof -Wformat -g -D__WXDEBUG__ -DNOPCH -DFOURWAYSSE2 -DUSE_SSL -DUSE_UPNP=0 -I/usr/local/lib/wx/include/gtk2-unicode-2.9 -I/usr/loal/include/wx-2.9 -D_FILE_OFFSET_BITS=64 -DWXUSINGDLL -D__WXGTK__ -pthread -DGUI -o obj/util.o util.cpp
In file included from main.h:11,
                 from headers.h:96,
                 from util.cpp:4:
db.h: In member function 'bool CDB::Exists(const K&)':
db.h:149: error: 'class Db' has no member named 'exists'
make: *** [obj/util.o] Error 1

I have tried to grep for the class definition of "Db" but I am unable to find it. Where is it? Is this a programming error from the developers of bitcoin, or is this a particular issue at my system?

You might need libdb4.8++-dev or something like it.
newbie
Activity: 10
Merit: 0
July 14, 2011, 12:19:23 AM
#1
Hello everyone,
I thought I would try this [bitcoin] out but I am unable to compile the latest bitcoin client (bitcoin-0.3.24).

I'm using 32-bit Slackware 13.1.0. When I initially attempted to compile I got errors related to wxWidgets being missing. This was resolved by compiling and installing wxWidgets. However I still get the following error:

Code:
g++ -c -O2 -Wno-invalid-offsetof -Wformat -g -D__WXDEBUG__ -DNOPCH -DFOURWAYSSE2 -DUSE_SSL -DUSE_UPNP=0 -I/usr/local/lib/wx/include/gtk2-unicode-2.9 -I/usr/loal/include/wx-2.9 -D_FILE_OFFSET_BITS=64 -DWXUSINGDLL -D__WXGTK__ -pthread -DGUI -o obj/util.o util.cpp
In file included from main.h:11,
                 from headers.h:96,
                 from util.cpp:4:
db.h: In member function 'bool CDB::Exists(const K&)':
db.h:149: error: 'class Db' has no member named 'exists'
make: *** [obj/util.o] Error 1

I have tried to grep for the class definition of "Db" but I am unable to find it. Where is it? Is this a programming error from the developers of bitcoin, or is this a particular issue at my system?

However, most importantly, if there is a solution for this problem then please tell me.

I also tried simply running the binary that was distributed with the package, but that resulted in the following error:

Code:
./bitcoin: symbol lookup error: ./bitcoin: undefined symbol: gtk_widget_get_realized
Jump to: