Post
Topic
Board Development & Technical Discussion
Re: Building headless Bitcoin and Bitcoin-qt on Windows
by
old c coder
on 22/04/2014, 14:55:12 UTC
Quote
Quote
...
Hello Jori,

A lot of "digital water" has flowed under the makefile "bridge" since nitrogenetics message # 1 in this forum! See
https://bitcointalk.org/index.php?topic=149479.msg1587734#msg1587734
He has updated that message many times since the original March 05, 2013 message.  I saved the original and still refer to it. Wink  And since it has been updated, the comments back and forth about it, in this forum, may not seem to make sense, since they (the comments) refer to an original message # 1 that you cannot see. Sad

But there are timeless comments (ahem!) on the art of compiling-linking software that should guide one to a working .exe file.  See messages # 45 (page 3), 68 & 75 (page 4), 85 (page 5), 102 (page 6) and bypassing all the bending over backwards that gcc qmake and makefile must do to run on or target Windows, message # 550 & 552 (page 28).  These last two answer all the issues I posed in message # 85 on July 13, 2013.  It's a fait accompli since I have now built working versions of 3 other *coind.exe's and bitcoind.exe (YACoind.exe, Auroracoind.exe and Maxcoind.exe) all on MSVC++ Express all using the same four static multi-threaded libraries: Boost 1.53, OpenSSL 1.0.1g (!), Berkeley DB 4.8.30 and levelDB 1.13.  It's pretty much build it (the libraries) and forget it.  Also it's very easy to swap out a library.  For example swapping out OpenSSL 1.0.1g for 1.0.1e or 1.0.1c was pretty much a no brainer.  Same for flavors of Boost.  Is 1.54 or 1.55 better than 1.53? Is level DB 1.16 better than 1.15, 1.13, 1.12 as far as bitcoin is concerned?  On Windows? 

Getting off the soapbox and high horse now... and going back to the nose to the grindstone, salt mine, dungeon...  Actually, to making the "how to build the libraries" video series for MSVC++.  Imagine a video game walk through Grin  GUI manipulation is much easier to understand by seeing rather than reading "how to".

Ron

Hi Ron,

OP = Original Poster and I was referring to nitrogenetics original message (post #1).

I really appreciate your time and help, but I did not find anything similar to the problems I'm having (i.e. libleveldb.a and libmemenv.a are available but do not get linked).

One thing I thought of yesterday: maybe the files were compiled and archived successfully, but do not contain all necessary content. It could be that while making leveldb, some essential files for bitcoin were skipped. Running ar tv libmemenv.a and ar tv libleveldb.a reveals:

Code:
rw-rw-rw- 0/0 432255 Apr 15 16:56 2014 memenv.o

and

Code:
rw-rw-rw- 0/0  21322 Apr 15 16:56 2014 port_win.o

respectively. Could you verify if you have similar output?

Thanks in advance,
Jori.
Hello Jori,

When I last built levelDB for gcc bitcoin building, it was last July it seems and my output is:
Code:
...c\leveldb  9:42:14.73 >ar tv libmemenv.a
rw-rw-rw- 0/0  33085 Jul 01 16:04 2013 memenv.o

...c\leveldb  9:42:44.03 >ar tv libleveldb.a
rw-rw-rw- 0/0   4119 Jul 01 16:04 2013 builder.o
rw-rw-rw- 0/0  26496 Jul 01 16:04 2013 c.o
rw-rw-rw- 0/0 104625 Mar 12 13:14 2014 db_impl.o
rw-rw-rw- 0/0  10257 Jul 01 16:04 2013 db_iter.o
rw-rw-rw- 0/0  10402 Jul 01 16:04 2013 dbformat.o
rw-rw-rw- 0/0   6155 Jul 01 16:04 2013 filename.o
rw-rw-rw- 0/0   6827 Jul 01 16:04 2013 log_reader.o
rw-rw-rw- 0/0   3044 Jul 01 16:04 2013 log_writer.o
rw-rw-rw- 0/0  15096 Jul 01 16:04 2013 memtable.o
rw-rw-rw- 0/0  45012 Jul 01 16:04 2013 repair.o
rw-rw-rw- 0/0   5934 Mar 11 11:57 2014 table_cache.o
rw-rw-rw- 0/0  21177 Jul 01 16:04 2013 version_edit.o
rw-rw-rw- 0/0  97689 Jul 01 16:04 2013 version_set.o
rw-rw-rw- 0/0   7759 Jul 01 16:04 2013 write_batch.o
rw-rw-rw- 0/0  15021 Jul 01 16:04 2013 block.o
rw-rw-rw- 0/0   3788 Jul 01 16:04 2013 block_builder.o
rw-rw-rw- 0/0   6070 Jul 01 16:04 2013 filter_block.o
rw-rw-rw- 0/0   4500 Jul 01 16:04 2013 format.o
rw-rw-rw- 0/0   4944 Jul 01 16:04 2013 iterator.o
rw-rw-rw- 0/0   6462 Jul 01 16:04 2013 merger.o
rw-rw-rw- 0/0   9652 Jul 01 16:04 2013 table.o
rw-rw-rw- 0/0  11333 Jul 01 16:04 2013 table_builder.o
rw-rw-rw- 0/0   7157 Jul 01 16:04 2013 two_level_iterator.o
rw-rw-rw- 0/0   2724 Jul 01 16:04 2013 arena.o
rw-rw-rw- 0/0   3500 Jul 01 16:04 2013 bloom.o
rw-rw-rw- 0/0   7497 Jul 01 16:04 2013 cache.o
rw-rw-rw- 0/0   3422 Jul 01 16:04 2013 coding.o
rw-rw-rw- 0/0   4748 Jul 01 16:04 2013 comparator.o
rw-rw-rw- 0/0   5503 Jul 01 16:04 2013 crc32c.o
rw-rw-rw- 0/0  20556 Jul 01 16:04 2013 env.o
rw-rw-rw- 0/0    288 Jul 01 16:04 2013 env_posix.o
rw-rw-rw- 0/0  48635 Jul 01 16:04 2013 env_win.o
rw-rw-rw- 0/0   1540 Jul 01 16:04 2013 filter_policy.o
rw-rw-rw- 0/0    770 Jul 01 16:04 2013 hash.o
rw-rw-rw- 0/0   4853 Jul 01 16:04 2013 histogram.o
rw-rw-rw- 0/0   2545 Jul 01 16:04 2013 logging.o
rw-rw-rw- 0/0    772 Jul 01 16:04 2013 options.o
rw-rw-rw- 0/0   2511 Jul 01 16:04 2013 status.o
rw-rw-rw- 0/0   4087 Jul 01 16:04 2013 port_win.o

"Alas, poor Jori! I knew him, levelDB; a library of infinite jest..."
So I would say that something is amiss with your levelDB library build.

Ron