Ich kann weder Litecoin noch Bitcoin Core Kompilieren macOS Big Sur

Ich versuche seit einigen Stunden entweder Bitcoin Core oder Litecoin Core zu Compileren, aber ich bekomme bei beiden eine Fehlermeldung vom Compiler die mir absolut nichts sagt.

1 warning generated.
1 warning generated.
1 warning generated.
32 warnings generated.
33 warnings generated.
1 warning generated.
1 warning generated.
make[1]: *** [all-recursive] Error 1
make: *** [all-recursive] Error 1

Es wäre Hilfreich wenn mir jemand erklären könnte wodurch der Fehler zustanden kommt.

Für LTC habe ich litecoin/doc/build-osx.md at 0.21 · litecoin-project/litecoin · GitHub verwendet, aber die Anleitung ist für Bitcoin Core ja fast identisch.

Problem für mich ist halt, Bitcoin Core 22 Klappt, aber alle darüber klappt nicht und bei Litcoin Core habe ich nur 0.21.1 Probiert.

Ich bedanke mich im Voraus für jeden der mir helfen kann.

Für mich es auch sehr Schwer zu erkennen wo der Fehler genau liegen soll, da es Permanente Compiler ausgaben gibt.

Z.b

clang: warning: argument unused during compilation: ‚-fstack-clash-protection‘ [-Wunused-command-line-argument]

Ich kann C++ (teilweise), aber ich habe absolut keine Ahnung was der Compiler von mir möchte.

Da du von Big Sur sprichst würde ich dir grundsätzlich empfehlen auf die neuste macOS Version (13.1) zu Updaten (sofern dein Mac das unterstützt). Hat aber erstmal nichts mit deinem Problem zu tun.

Hast du einen Intel oder Arm Mac?

Mach mal g++ --version. Da wird dir, wie man an deiner Fehlermeldung schon sieht, wahrscheinlich Apple Clang aufgetischt. Ich würde empfehlen g++ mit Homebrew zu installieren (brew install g++) und in der Config zu hinterlegen:

CXX=/opt/homebrew/bin/g++-12 ./configure

Ich habe jedenfalls mit Apple Clang sehr häufig Probleme. Mit Bitcoin Core allerdings nicht.

Danke, danke, danke fürs Antworten :sweat_smile:

Ich verwende noch ein älteres Intel Modell, ende 2013. Upgraden auf neuere OSX Versionen ist da bissel Tricky :dotted_line_face:.

Ich werden gleichmal deine G++ Lösung probieren, aktuell Arbeitet er noch ^^

Ich konnte zumindest den Fehler einschränken mit:

make -s >/dev/null

Somit konnte ich herausfinden dass es ein Problem mit Boostlib gab. Also habe ich da einfach versucht eine Ältere Version zu Installieren (genau die, welche LTC auch benötigt). Wenn das Klappt werde ich den Beitrag ergänzen mit meiner Lösung und wenn es nicht klappt gehe ich deine durch. Wo ich sogar zugeben muss, die ist wahrscheinlich besser als meine Lösung, einfach eine ältere Boostlib zu verwenden :upside_down_face: :upside_down_face:

Ergebnis meines Versuches:

clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [litecoind] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all-recursive] Error 1

Dann probiere ich jetzt g++ :upside_down_face: :sweat_smile:

1 „Gefällt mir“

Dann mit meinem Pfad aufpassen, auf Intel Macs liegt Homebrew und installierte Pakete in /usr/local/bin und nicht in /opt/homebrew/bin.

Ok jetzt erhalte ich die Meldung:

checking for main in -lfmt… no
configure: error: libfmt missing

wenn ich es mit CXX=/usr/local/bin/g++-12 ./configure probiere.

Ich bekomme langsam den Eindruck dass unter etwas älteren Macs fast unmöglich ist die neusten Core Version zu Compelieren. Also was das angeht ist C++ wirklich nicht schön :sweat_smile: :upside_down_face:

libfmt Installiert, aber bekomme Permanent die gleiche Meldung.

Hast du hier eigentlich keinen konkreten Error bekommen?

Hast du Xcode fest installiert oder nur die Command Line Tools? Ich weiß nicht ob die Xcode Version die du dir aus dem App Store ziehen kannst abhängig von der installierten macOS Version ist, aber vielleicht kannst du damit ein paar Lücken füllen.

Vielleicht hilft das noch:

Ansonsten frag vielleicht mal auf BSE oder mach ein Issue im Core Repo auf, da hast du höhere Erfolgschancen… :sweat_smile:

Wenn ich make -s >/dev/null verwende erhalte ich folgende Ausgabe:

clang: warning: argument unused during compilation: '-fstack-clash-protection' [-Wunused-command-line-argument]
wallet/test/init_test_fixture.cpp:34:52: error: no member named 'BOOST_FILESYSTEM_C_STR' in 'boost::filesystem::path'
    std::ofstream f(m_walletdir_path_cases["file"].BOOST_FILESYSTEM_C_STR);
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
In file included from wallet/test/init_test_fixture.cpp:9:
In file included from ./wallet/test/init_test_fixture.h:11:
In file included from ./test/util/setup_common.h:21:
In file included from /usr/local/include/boost/thread/thread.hpp:12:
In file included from /usr/local/include/boost/thread/thread_only.hpp:22:
/usr/local/include/boost/thread/detail/thread.hpp:118:18: warning: 'run' overrides a member function but is not marked 'override' [-Wsuggest-override]
            void run()
                 ^
/usr/local/include/boost/thread/pthread/thread_heap_alloc.hpp:29:24: note: in instantiation of template class 'boost::detail::thread_data<void (*)()>' requested here
            return new T(static_cast<A1&&>(a1));
                       ^
/usr/local/include/boost/thread/detail/thread.hpp:221:52: note: in instantiation of function template specialization 'boost::detail::heap_new<boost::detail::thread_data<void (*)()>, void (*)()>' requested here
            return detail::thread_data_ptr(detail::heap_new<detail::thread_data<void(*)()> >(
                                                   ^
/usr/local/include/boost/thread/pthread/thread_data.hpp:169:26: note: overridden virtual function is here
            virtual void run()=0;
                         ^
1 warning and 1 error generated.
make[2]: *** [wallet/test/test_test_litecoin-init_test_fixture.o] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all-recursive] Error 1

XCode ist installiert also vollständig, ich brauchte das auch für Flutter. Ich habe ja Bitcoin Core 21 am Laufen, vor 1 Woche auf diesem Mac Kompiliert. Deshalb werden meine Haare grau warum es bei den neuen Versionen nicht gelingt. Und vor allem will ich erstmal den neusten Litcoin Core Kompilieren, dass ist „Wichtiger“.

Ich habe es auch bereits mit NoGui und allem Probiert. Ich sitze wirklich seit mehreren Stunden bei Google, in Github und komme einfach keinen Schritt weiter.

Wenn ich deine Lösung anwende gehe ich so vor:

  1. brew install automake libtool boost miniupnpc pkg-config python qt libevent qrencode
  2. brew install librsvg
  3. brew install sqlite
  4. brew install berkeley-db4
  5. ./autogen.sh
  6. CXX=/usr/local/bin/g+±12 ./configure

Und dann bekomme ich:

checking whether le32toh is declared... no
checking whether le64toh is declared... no
checking whether htole16 is declared... no
checking whether htole32 is declared... no
checking whether htole64 is declared... no
checking whether be16toh is declared... no
checking whether be32toh is declared... no
checking whether be64toh is declared... no
checking whether htobe16 is declared... no
checking whether htobe32 is declared... no
checking whether htobe64 is declared... no
checking whether bswap_16 is declared... no
checking whether bswap_32 is declared... no
checking whether bswap_64 is declared... no
checking for __builtin_clzl... yes
checking for __builtin_clzll... yes
checking for getmemoryinfo... no
checking for mallopt M_ARENA_MAX... no
checking for posix_fallocate... no
checking for visibility attribute... yes
checking for thread_local support... yes
checking for gmtime_r... yes
checking for Linux getrandom syscall... no
checking for getentropy... no
checking for getentropy via random.h... yes
checking for sysctl... yes
checking for sysctl KERN_ARND... no
checking for if type char equals int8_t... no
checking for fdatasync... no
checking for F_FULLFSYNC... yes
checking for O_CLOEXEC... yes
checking for __builtin_prefetch... yes
checking for _mm_prefetch... yes
checking for strong getauxval support in the system headers... no
checking for weak getauxval support in the compiler... yes
checking for std::system... yes
checking for ::_wsystem... no
checking for Qt5Core >= 5.5.1... yes
checking for Qt5Gui >= 5.5.1... yes
checking for Qt5Widgets >= 5.5.1... yes
checking for Qt5Network >= 5.5.1... yes
checking for Qt5Test >= 5.5.1... yes
checking for Qt5DBus >= 5.5.1... yes
checking for static Qt... no
checking whether -fPIE can be used with this Qt config... yes
checking for moc-qt5... no
checking for moc5... no
checking for moc... /usr/local/Cellar/qt@5/5.15.8_1/bin/moc
checking for uic-qt5... no
checking for uic5... no
checking for uic... /usr/local/Cellar/qt@5/5.15.8_1/bin/uic
checking for rcc-qt5... no
checking for rcc5... no
checking for rcc... /usr/local/Cellar/qt@5/5.15.8_1/bin/rcc
checking for lrelease-qt5... no
checking for lrelease5... no
checking for lrelease... /usr/local/Cellar/qt@5/5.15.8_1/bin/lrelease
checking for lupdate-qt5... no
checking for lupdate5... no
checking for lupdate... /usr/local/Cellar/qt@5/5.15.8_1/bin/lupdate
checking whether the linker accepts -framework Foundation -framework ApplicationServices -framework AppKit... yes
checking whether to build Litecoin Core GUI... yes (Qt5)
checking for sqlite3 >= 3.7.17... yes
checking whether to build wallet with support for sqlite... yes
checking for miniupnpc/miniwget.h... no
checking for miniupnpc/miniupnpc.h... no
checking for miniupnpc/upnpcommands.h... no
checking for miniupnpc/upnperrors.h... no
checking for boostlib >= 1.58.0 (105800)... yes
checking whether the Boost::System library is available... yes
checking for exit in -lboost_system... yes
checking whether the Boost::Filesystem library is available... yes
checking for exit in -lboost_filesystem... yes
checking whether the Boost::Thread library is available... yes
checking for exit in -lboost_thread-mt... yes
checking whether the Boost::Unit_Test_Framework library is available... yes
checking for dynamic linked boost test... yes
checking for libssl... yes
checking for libcrypto... yes
checking for libevent >= 2.0.21... yes
checking for libevent_pthreads >= 2.0.21... yes
checking for libqrencode... yes
checking for libzmq >= 4... yes
checking for main in -lfmt... no
configure: error: libfmt missing

Was ist BSE?

https://bitcoin.stackexchange.com/

Ich habe langsam den Eindruck es liegt am Mac, also ich bin wirklich leider jemand der erst den PC verlassen kann wenn er geschafft hat was er vor hatte. Naja entweder Mac gegen Linux austauschen oder eine neue Version drauf zwingen. Aber ich bleibe dabei, nach fast 1 Tag versuchen. Es ist unmöglich die neusten Core Varianten auf Mac OS Big Sure zu erstellen und das ist für mich das größte Probleme mit C++, wer weiß was ich mir zerschossen habe beim Versuch die Richtig lib zu Installieren und das Problem zu lösen… Wird zeit das auch im Coding Space ein Umbruch passiert. Ja ich weiß dass ich unfähig bin C++ zu Kompilieren aber es sagt viel aus wenn man Student sein muss um C++ Kompilieren zu können. Leider bin ich noch lange nicht gut genug dass ich mir zu traue Bitcoin Core alleine in Rust zu Portieren. Bin also darauf angewiesen auf die Arbeit von anderen. :sleepy: naja sollte ich es irgendwie hinbekomme schreibe ich meine Lösung hier rein. :face_holding_back_tears:

Also dein Clang Versuch scheitert ja offensichtlich an Boost. Bist du auf Version 1.81.0?

Das hier ist genau dein Error: Failure to build with Boost 1.77 · Issue #22482 · bitcoin/bitcoin · GitHub