2016-12-08 4 views
0

Sorry über Englisch Fehler) Bitte helfen. Ich versuche, v8-Engine von "Hellow Welt" Beispiel zu bauen. Es wird in mein Basisprojekt eingebettet, also muss ich es mit Cmake erstellen (System ist Mac OS Sierra). Ich kompiliert v8 Motor (Build Bibliotheken in out-Verzeichnis gespeichert Standard) und i folgende Dateisystemstruktur haben:Gebäude v8 Motor mit Cmake

screen file system

Wie im Beispiel zeigte, dass es später am meisten bauen mit diesem Ausdruck machen:

g++ -I. hello_world.cpp -o hello_world -Wl,--start-group out/x64.release/obj.target/{tools/gyp/libv8_{base,libbase,external_snapshot,libplatform},third_party/icu/libicu{uc,i18n,data}}.a -Wl,--end-group -lrt -ldl -pthread -std=c++0x 

auch, schauen Sie bitte auf meine CMakeLists.txt Datei:

screen CMakeLists.txt

auf bu ild Ich habe folgenden Fehlerausgang:

ld: symbol(s) not found for architecture x86_64 
+0

Homebrew Hat 'v8' Formel funktioniert für Sie? Wenn du die neuste v8-Version brauchst schaue auf meine 'v8 @ 5.7' Formel unter [pinepain/devtools] (https://github.com/pinepain/homebrew-devtools) tippe auf. Es ist weniger wahrscheinlich, dass Sie es zusammen mit Ihrem Projekt erstellen möchten, da neuere Versionen libbase und andere als dynamisch erstellen, so dass es jetzt viel einfacher ist. Um Hallo Welt zu erstellen, siehe [Hallo_world_build_osx.sh] (https://github.com/pinepain/php-v8/blob/upgrade-to-v8-5.7/scripts/test_v8/hello_world_build_osx.sh) Skript, das ich verwende, um v8 Build zu testen (Bitte beachten Sie, dass Sie den richtigen 'ROOT' Pfad angeben müssen). – pinepain

+0

Kannst du bitte veröffentlichen, welche Symbole verpasst werden? – pinepain

+0

Sie müssen die Fehlerausgabe tatsächlich bereitstellen. Veröffentliche auch keine Bilder von Text, poste den Text in der Frage. – xaxxon

Antwort

0

ich behobenes Problem, und für zukünftiges schreibe ich meine Schritte, wie V8 auf macOS bauen:

  1. Build-V8-Motor ohne Snapshot und als gemeinsam genutzte Bibliothek für native Plattform: sudo make library = freigegebener Snapshot = aus nativ;

  2. Kompilieren mit clang (gcc werfen Fehler, wie "undefined Symbol für Architektur ..." etc) aber clang auf Mac kompiliert gut;

  3. Kopieren von Ihren ./out Verzeichnisdateien mit *./Dylib zu usr/local/lib

+0

Wenn Sie eine Reihe von Fehlern beim Verknüpfen mit anderen Programmen erhalten, müssen Sie möglicherweise sagen, dass es mit libC++ anstelle von libstdC++ zu kompilieren. Sehen Sie sich die env vars an, die ich hier eingestellt habe: https://github.com/xaxxon/v8toolkit/blob/master/osx_v8_build.md Sie müssen auch ein paar .a Dateien aus diesem Verzeichnis kopieren, da nicht alles in eine gemeinsame Datei integriert ist Bibliothek. – xaxxon