<p>It looks like there are issues with gcc on Mac. On an <a href="https://github.com/libbitcoin/libbitcoin/issues/298" rel="nofollow noreferrer">issue</a> in the libbitcoin github repository 'evoskuil' states:</p>

<blockquote>
  <p>gcc on osx is problematic because the ABI implementation is incomplete.</p>
</blockquote>

<p>It is further suggested to use "the native Mac clang++/clang compiler" instead of gcc.</p>

<p>The <a href="https://github.com/libbitcoin/libbitcoin/blob/master/README.md#macintosh" rel="nofollow noreferrer">libbitcoin Macintosh readme</a> prescribes:</p>

<blockquote>
  <p>Libbitcoin requires a C++11 compiler, currently minimum GCC 4.8.0 or Clang based on LLVM 3.5.</p>
</blockquote>

CC BY-SA 3.0
2017-06-27T02:16:08.023Z
2017-06-27T02:16:08.023Z
Murch
<p>I'm trying to install libbitcoin on Mac os 10.9, with Eclipse for C++.</p>

<p>I follow the instructions given on github (<a href="https://github.com/libbitcoin/libbitcoin" rel="nofollow noreferrer">https://github.com/libbitcoin/libbitcoin</a>), then I include:</p>

<pre><code>#include &lt;bitcoin/bitcoin.hpp&gt;
using namespace bc;
</code></pre>

<p>The installation seems fine but when I build the project (cap4.cpp) I get the following errors in Eclipse:</p>

<pre><code>    Building file: ../cap4.cpp
Invoking: GCC C++ Compiler
g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"cap4.d" -MT"cap4.o" -o "cap4.o" "../cap4.cpp"
In file included from ../cap4.cpp:5:
In file included from /usr/local/include/bitcoin/bitcoin.hpp:19:
In file included from /usr/local/include/bitcoin/bitcoin/constants.hpp:25:
In file included from /usr/local/include/bitcoin/bitcoin/config/checkpoint.hpp:27:
In file included from /usr/local/include/bitcoin/bitcoin/formats/base_16.hpp:24:
In file included from /usr/local/include/bitcoin/bitcoin/math/hash.hpp:29:
/usr/local/include/bitcoin/bitcoin/utility/data.hpp:51:14: error: no type named 'initializer_list' in namespace 'std'
typedef std::initializer_list&lt;data_slice&gt; loaf;
        ~~~~~^
/usr/local/include/bitcoin/bitcoin/utility/data.hpp:51:30: error: expected unqualified-id
typedef std::initializer_list&lt;data_slice&gt; loaf;
                             ^
/usr/local/include/bitcoin/bitcoin/utility/data.hpp:68:31: error: unknown type name 'loaf'
inline data_chunk build_chunk(loaf slices, size_t extra_reserve=0);
                              ^
/usr/local/include/bitcoin/bitcoin/utility/data.hpp:75:41: error: unknown type name 'loaf'
bool build_array(byte_array&lt;Size&gt;&amp; out, loaf slices);
                                        ^
In file included from ../cap4.cpp:5:
In file included from /usr/local/include/bitcoin/bitcoin.hpp:19:
In file included from /usr/local/include/bitcoin/bitcoin/constants.hpp:25:
In file included from /usr/local/include/bitcoin/bitcoin/config/checkpoint.hpp:27:
In file included from /usr/local/include/bitcoin/bitcoin/formats/base_16.hpp:24:
In file included from /usr/local/include/bitcoin/bitcoin/math/hash.hpp:29:
In file included from /usr/local/include/bitcoin/bitcoin/utility/data.hpp:156:
/usr/local/include/bitcoin/bitcoin/impl/utility/data.ipp:32:25: error: expected '(' for function-style cast or type construction
    return byte_array&lt;1&gt;{ { byte } };
           ~~~~~~~~~~~~~^
/usr/local/include/bitcoin/bitcoin/impl/utility/data.ipp:37:22: error: expected '(' for function-style cast or type construction
    return data_chunk{ byte };
           ~~~~~~~~~~^
/usr/local/include/bitcoin/bitcoin/impl/utility/data.ipp:40:31: error: unknown type name 'loaf'
inline data_chunk build_chunk(loaf slices, size_t extra_reserve)
                              ^
/usr/local/include/bitcoin/bitcoin/impl/utility/data.ipp:55:41: error: unknown type name 'loaf'
bool build_array(byte_array&lt;Size&gt;&amp; out, loaf slices)
                                        ^
/usr/local/include/bitcoin/bitcoin/impl/utility/data.ipp:95:57: error: expected expression
    /* safe to ignore */ build_array&lt;Left + Right&gt;(out, { left, right });
                                                        ^
/usr/local/include/bitcoin/bitcoin/impl/utility/data.ipp:105:43: error: expected expression
    /* safe to ignore */ build_array(out, { left, middle, right });
                                          ^
/usr/local/include/bitcoin/bitcoin/impl/utility/data.ipp:126:54: error: expected expression
    DEBUG_ONLY(const auto result =) build_array(out, { bytes });
                                                     ^
In file included from ../cap4.cpp:5:
In file included from /usr/local/include/bitcoin/bitcoin.hpp:19:
In file included from /usr/local/include/bitcoin/bitcoin/constants.hpp:25:
In file included from /usr/local/include/bitcoin/bitcoin/config/checkpoint.hpp:27:
In file included from /usr/local/include/bitcoin/bitcoin/formats/base_16.hpp:24:
/usr/local/include/bitcoin/bitcoin/math/hash.hpp:35:8: error: unknown type name 'constexpr'
static BC_CONSTEXPR size_t hash_size = 32;
       ^
/usr/local/include/bitcoin/bitcoin/compat.hpp:34:26: note: expanded from macro 'BC_CONSTEXPR'
    #define BC_CONSTEXPR constexpr
                         ^
In file included from ../cap4.cpp:5:
In file included from /usr/local/include/bitcoin/bitcoin.hpp:19:
In file included from /usr/local/include/bitcoin/bitcoin/constants.hpp:25:
In file included from /usr/local/include/bitcoin/bitcoin/config/checkpoint.hpp:27:
In file included from /usr/local/include/bitcoin/bitcoin/formats/base_16.hpp:24:
/usr/local/include/bitcoin/bitcoin/math/hash.hpp:35:27: error: expected ';' after top level declarator
static BC_CONSTEXPR size_t hash_size = 32;
                          ^
/usr/local/include/bitcoin/bitcoin/math/hash.hpp:36:8: error: unknown type name 'constexpr'
static BC_CONSTEXPR size_t half_hash_size = hash_size / 2;
       ^
/usr/local/include/bitcoin/bitcoin/compat.hpp:34:26: note: expanded from macro 'BC_CONSTEXPR'
    #define BC_CONSTEXPR constexpr
                         ^
In file included from ../cap4.cpp:5:
In file included from /usr/local/include/bitcoin/bitcoin.hpp:19:
In file included from /usr/local/include/bitcoin/bitcoin/constants.hpp:25:
In file included from /usr/local/include/bitcoin/bitcoin/config/checkpoint.hpp:27:
In file included from /usr/local/include/bitcoin/bitcoin/formats/base_16.hpp:24:
/usr/local/include/bitcoin/bitcoin/math/hash.hpp:36:27: error: expected ';' after top level declarator
static BC_CONSTEXPR size_t half_hash_size = hash_size / 2;
                          ^
/usr/local/include/bitcoin/bitcoin/math/hash.hpp:37:8: error: unknown type name 'constexpr'
static BC_CONSTEXPR size_t quarter_hash_size = half_hash_size / 2;
       ^
/usr/local/include/bitcoin/bitcoin/compat.hpp:34:26: note: expanded from macro 'BC_CONSTEXPR'
    #define BC_CONSTEXPR constexpr
                         ^
In file included from ../cap4.cpp:5:
In file included from /usr/local/include/bitcoin/bitcoin.hpp:19:
In file included from /usr/local/include/bitcoin/bitcoin/constants.hpp:25:
In file included from /usr/local/include/bitcoin/bitcoin/config/checkpoint.hpp:27:
In file included from /usr/local/include/bitcoin/bitcoin/formats/base_16.hpp:24:
/usr/local/include/bitcoin/bitcoin/math/hash.hpp:37:27: error: expected ';' after top level declarator
static BC_CONSTEXPR size_t quarter_hash_size = half_hash_size / 2;
                          ^
/usr/local/include/bitcoin/bitcoin/math/hash.hpp:38:8: error: unknown type name 'constexpr'
static BC_CONSTEXPR size_t long_hash_size = 2 * hash_size;
       ^
/usr/local/include/bitcoin/bitcoin/compat.hpp:34:26: note: expanded from macro 'BC_CONSTEXPR'
    #define BC_CONSTEXPR constexpr
                         ^
In file included from ../cap4.cpp:5:
In file included from /usr/local/include/bitcoin/bitcoin.hpp:19:
In file included from /usr/local/include/bitcoin/bitcoin/constants.hpp:25:
In file included from /usr/local/include/bitcoin/bitcoin/config/checkpoint.hpp:27:
In file included from /usr/local/include/bitcoin/bitcoin/formats/base_16.hpp:24:
/usr/local/include/bitcoin/bitcoin/math/hash.hpp:38:27: error: expected ';' after top level declarator
static BC_CONSTEXPR size_t long_hash_size = 2 * hash_size;
                          ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
make: *** [cap4.o] Error 1
</code></pre>

<p>What's wrong?</p>

<mac><compiling><libbitcoin>
What causes this error when installing libbitcoin?
Rexcirus
# What causes this error when installing libbitcoin?

(Asked by: username_0 on 2017-06-10)

I'm trying to install libbitcoin on Mac os 10.9, with Eclipse for C++.

I follow the instructions given on github (<https://github.com/libbitcoin/libbitcoin>), then I include:

```
#include <bitcoin/bitcoin.hpp>
using namespace bc;

```

The installation seems fine but when I build the project (cap4.cpp) I get the following errors in Eclipse:

```
    Building file: ../cap4.cpp
Invoking: GCC C++ Compiler
g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"cap4.d" -MT"cap4.o" -o "cap4.o" "../cap4.cpp"
In file included from ../cap4.cpp:5:
In file included from /usr/local/include/bitcoin/bitcoin.hpp:19:
In file included from /usr/local/include/bitcoin/bitcoin/constants.hpp:25:
In file included from /usr/local/include/bitcoin/bitcoin/config/checkpoint.hpp:27:
In file included from /usr/local/include/bitcoin/bitcoin/formats/base_16.hpp:24:
In file included from /usr/local/include/bitcoin/bitcoin/math/hash.hpp:29:
/usr/local/include/bitcoin/bitcoin/utility/data.hpp:51:14: error: no type named 'initializer_list' in namespace 'std'
typedef std::initializer_list<data_slice> loaf;
        ~~~~~^
/usr/local/include/bitcoin/bitcoin/utility/data.hpp:51:30: error: expected unqualified-id
typedef std::initializer_list<data_slice> loaf;
                             ^
/usr/local/include/bitcoin/bitcoin/utility/data.hpp:68:31: error: unknown type name 'loaf'
inline data_chunk build_chunk(loaf slices, size_t extra_reserve=0);
                              ^
/usr/local/include/bitcoin/bitcoin/utility/data.hpp:75:41: error: unknown type name 'loaf'
bool build_array(byte_array<Size>& out, loaf slices);
                                        ^
In file included from ../cap4.cpp:5:
In file included from /usr/local/include/bitcoin/bitcoin.hpp:19:
In file included from /usr/local/include/bitcoin/bitcoin/constants.hpp:25:
In file included from /usr/local/include/bitcoin/bitcoin/config/checkpoint.hpp:27:
In file included from /usr/local/include/bitcoin/bitcoin/formats/base_16.hpp:24:
In file included from /usr/local/include/bitcoin/bitcoin/math/hash.hpp:29:
In file included from /usr/local/include/bitcoin/bitcoin/utility/data.hpp:156:
/usr/local/include/bitcoin/bitcoin/impl/utility/data.ipp:32:25: error: expected '(' for function-style cast or type construction
    return byte_array<1>{ { byte } };
           ~~~~~~~~~~~~~^
/usr/local/include/bitcoin/bitcoin/impl/utility/data.ipp:37:22: error: expected '(' for function-style cast or type construction
    return data_chunk{ byte };
           ~~~~~~~~~~^
/usr/local/include/bitcoin/bitcoin/impl/utility/data.ipp:40:31: error: unknown type name 'loaf'
inline data_chunk build_chunk(loaf slices, size_t extra_reserve)
                              ^
/usr/local/include/bitcoin/bitcoin/impl/utility/data.ipp:55:41: error: unknown type name 'loaf'
bool build_array(byte_array<Size>& out, loaf slices)
                                        ^
/usr/local/include/bitcoin/bitcoin/impl/utility/data.ipp:95:57: error: expected expression
    /* safe to ignore */ build_array<Left + Right>(out, { left, right });
                                                        ^
/usr/local/include/bitcoin/bitcoin/impl/utility/data.ipp:105:43: error: expected expression
    /* safe to ignore */ build_array(out, { left, middle, right });
                                          ^
/usr/local/include/bitcoin/bitcoin/impl/utility/data.ipp:126:54: error: expected expression
    DEBUG_ONLY(const auto result =) build_array(out, { bytes });
                                                     ^
In file included from ../cap4.cpp:5:
In file included from /usr/local/include/bitcoin/bitcoin.hpp:19:
In file included from /usr/local/include/bitcoin/bitcoin/constants.hpp:25:
In file included from /usr/local/include/bitcoin/bitcoin/config/checkpoint.hpp:27:
In file included from /usr/local/include/bitcoin/bitcoin/formats/base_16.hpp:24:
/usr/local/include/bitcoin/bitcoin/math/hash.hpp:35:8: error: unknown type name 'constexpr'
static BC_CONSTEXPR size_t hash_size = 32;
       ^
/usr/local/include/bitcoin/bitcoin/compat.hpp:34:26: note: expanded from macro 'BC_CONSTEXPR'
    #define BC_CONSTEXPR constexpr
                         ^
In file included from ../cap4.cpp:5:
In file included from /usr/local/include/bitcoin/bitcoin.hpp:19:
In file included from /usr/local/include/bitcoin/bitcoin/constants.hpp:25:
In file included from /usr/local/include/bitcoin/bitcoin/config/checkpoint.hpp:27:
In file included from /usr/local/include/bitcoin/bitcoin/formats/base_16.hpp:24:
/usr/local/include/bitcoin/bitcoin/math/hash.hpp:35:27: error: expected ';' after top level declarator
static BC_CONSTEXPR size_t hash_size = 32;
                          ^
/usr/local/include/bitcoin/bitcoin/math/hash.hpp:36:8: error: unknown type name 'constexpr'
static BC_CONSTEXPR size_t half_hash_size = hash_size / 2;
       ^
/usr/local/include/bitcoin/bitcoin/compat.hpp:34:26: note: expanded from macro 'BC_CONSTEXPR'
    #define BC_CONSTEXPR constexpr
                         ^
In file included from ../cap4.cpp:5:
In file included from /usr/local/include/bitcoin/bitcoin.hpp:19:
In file included from /usr/local/include/bitcoin/bitcoin/constants.hpp:25:
In file included from /usr/local/include/bitcoin/bitcoin/config/checkpoint.hpp:27:
In file included from /usr/local/include/bitcoin/bitcoin/formats/base_16.hpp:24:
/usr/local/include/bitcoin/bitcoin/math/hash.hpp:36:27: error: expected ';' after top level declarator
static BC_CONSTEXPR size_t half_hash_size = hash_size / 2;
                          ^
/usr/local/include/bitcoin/bitcoin/math/hash.hpp:37:8: error: unknown type name 'constexpr'
static BC_CONSTEXPR size_t quarter_hash_size = half_hash_size / 2;
       ^
/usr/local/include/bitcoin/bitcoin/compat.hpp:34:26: note: expanded from macro 'BC_CONSTEXPR'
    #define BC_CONSTEXPR constexpr
                         ^
In file included from ../cap4.cpp:5:
In file included from /usr/local/include/bitcoin/bitcoin.hpp:19:
In file included from /usr/local/include/bitcoin/bitcoin/constants.hpp:25:
In file included from /usr/local/include/bitcoin/bitcoin/config/checkpoint.hpp:27:
In file included from /usr/local/include/bitcoin/bitcoin/formats/base_16.hpp:24:
/usr/local/include/bitcoin/bitcoin/math/hash.hpp:37:27: error: expected ';' after top level declarator
static BC_CONSTEXPR size_t quarter_hash_size = half_hash_size / 2;
                          ^
/usr/local/include/bitcoin/bitcoin/math/hash.hpp:38:8: error: unknown type name 'constexpr'
static BC_CONSTEXPR size_t long_hash_size = 2 * hash_size;
       ^
/usr/local/include/bitcoin/bitcoin/compat.hpp:34:26: note: expanded from macro 'BC_CONSTEXPR'
    #define BC_CONSTEXPR constexpr
                         ^
In file included from ../cap4.cpp:5:
In file included from /usr/local/include/bitcoin/bitcoin.hpp:19:
In file included from /usr/local/include/bitcoin/bitcoin/constants.hpp:25:
In file included from /usr/local/include/bitcoin/bitcoin/config/checkpoint.hpp:27:
In file included from /usr/local/include/bitcoin/bitcoin/formats/base_16.hpp:24:
/usr/local/include/bitcoin/bitcoin/math/hash.hpp:38:27: error: expected ';' after top level declarator
static BC_CONSTEXPR size_t long_hash_size = 2 * hash_size;
                          ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
make: *** [cap4.o] Error 1

```

What's wrong?

**Tags:** mac, compiling, libbitcoin


---

## 1 answers

### Answer by username_1 on 2017-06-27. Score: 1 | Accepted answer

It looks like there are issues with gcc on Mac. On an [issue](https://github.com/libbitcoin/libbitcoin/issues/298) in the libbitcoin github repository 'evoskuil' states:

> gcc on osx is problematic because the ABI implementation is incomplete.

It is further suggested to use "the native Mac clang++/clang compiler" instead of gcc.

The [libbitcoin Macintosh readme](https://github.com/libbitcoin/libbitcoin/blob/master/README.md#macintosh) prescribes:

> Libbitcoin requires a C++11 compiler, currently minimum GCC 4.8.0 or Clang based on LLVM 3.5.


---

