Linux - SoftwareThis forum is for Software issues.
Having a problem installing a new program? Want to know which application is best for the job? Post your question in this forum.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
I thought I would try bitcoin 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
On the bitcoin forum I was told the following
Quote:
You might need libdb4.8++-dev or something like it.
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/i38...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
Try using Google and searching for the error message. Why won't this work for you --> http://forums.atomicmpc.com.au/index...howtopic=39944 I bet you're having the same problem, older db libraries than the Bitcoin devs are building against. The other option is to use an earlier version of Bitcoin.
Also, I'm not a Slackware user, but I believe Slackware installs the headers and static libs rather than splitting them out into a -dev package. You should reinstall the Slackware db package and not install Ubuntu cruft or you will very likely have a borked system in no time. I'd fix that before I worried about building Bitcoin.
Try using Google and searching for the error message. Why won't this work for you --> http://forums.atomicmpc.com.au/index...howtopic=39944 I bet you're having the same problem, older db libraries than the Bitcoin devs are building against. The other option is to use an earlier version of Bitcoin.
Also, I'm not a Slackware user, but I believe Slackware installs the headers and static libs rather than splitting them out into a -dev package. You should reinstall the Slackware db package and not install Ubuntu cruft or you will very likely have a borked system in no time. I'd fix that before I worried about building Bitcoin.
Thanks.
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...howtopic=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:
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
...
Changing the Makefile isn't going to help. You either need to upgrade your version of Berkeley db to that version the Bitcoin developers are using, use an older version of Bitcoin that is compatible with the Berkely db version you have installed, or hack the Bitcoin code to be compatible with the Berkeley db version you have installed.
Changing the Makefile isn't going to help. You either need to upgrade your version of Berkeley db to that version the Bitcoin developers are using, use an older version of Bitcoin that is compatible with the Berkely db version you have installed, or hack the Bitcoin code to be compatible with the Berkeley db version you have installed.
Thanks again, but now I've tried dB-5.1.19 and dB-5.2.28 -- I get the exact same error on both:
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
ui.cpp:46: error: variable or field 'HandleCtrlA' declared void
ui.cpp:46: error: 'wxKeyEvent' was not declared in this scope
ui.cpp:46: error: 'event' was not declared in this scope
ui.cpp: In function 'std::string DateStr(int64)':
ui.cpp:67: error: 'wxDateTime' was not declared in this scope
ui.cpp: In function 'std::string DateTimeStr(int64)':
ui.cpp:73: error: 'wxDateTime' was not declared in this scope
ui.cpp:73: error: expected ';' before 'datetime'
ui.cpp:75: error: 'datetime' was not declared in this scope
ui.cpp:77: error: 'datetime' was not declared in this scope
ui.cpp: At global scope:
ui.cpp:80: error: 'wxString' does not name a type
...
OK, so I installed Slackware 13.1, 32-bit in a virtual machine (IDK, I guess I was bored). I confirmed your original error with a fresh Slackware install. The reason was Berkeley DB is too old on 13.1 (hhhmmm, seems I said that before).
You will need to build against the latest wxWidgets (2.9 series) and the latest Berkeley DB (5.2.28). MiniUPNP is optional, but if you choose to build against it, you'll need the latest release of that as well. Slackware 13.1 comes with older versions of these libraries; the version of Boost that comes with 13.1 seems to be OK. Therefore, to get the latest bitcoin to build, you need to install the newer wxWidgets and Berkeley DB. I would recommend installing them in the /usr/local prefix so they don't overwrite your existing files. Installing in /usr/local is not the default for Berkeley DB.
Once you have the correct version of wxWidgets and db, you need to make some minor tweaks to makefile.unix. First change the line USE_UPNP:=0 to USE_UPNP:= Then change the -Bstatic to -Bdynamic in the LIBS variable. Or re-install Boost with the static libraries. The Bitcoin client and daemon will both successfully build after making these changes. I don't know if it works (I don't care either), but it builds without error.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.