Frage

Hat jemand erfolgreich kompiliert TCC auf OS X?

Von dem, was ich weiß, dass es möglich sein soll, aber wenn ich laufe mache ich die folgende Fehlermeldung erhalten:

$ make
gcc -o tcc tcc.c -DTCC_TARGET_I386 -O2 -g -Wall -fno-strict-aliasing -mpreferred-stack-                boundary=2 -march=i386 -falign-functions=0 -Wno-pointer-sign -Wno-sign-compare -D_FORTIFY_SOURCE=0 -lm -ldl
tcc.c:1: error: CPU you selected does not support x86-64 instruction set
tcc.c:1: error: CPU you selected does not support x86-64 instruction set
tcc.c:1: error: -mpreferred-stack-boundary=2 is not between 4 and 12
make: *** [tcc] Error 1

./configure läuft gut und gibt die folgende Ausgabe:

$ ./configure 
Binary  directory   /usr/local/bin
TinyCC directory    /usr/local/lib/tcc
Library directory   /usr/local/lib
Include directory   /usr/local/include
Manual directory    /usr/local/man
Doc directory       /usr/local/share/doc/tcc
Target root prefix  
Source path      /Users/aaron/Downloads/tcc-0.9.25
C compiler       gcc
CPU              x86
Big Endian       no
gprof enabled    no
cross compilers  no
use libgcc       no
Creating config.mak and config.h

Ich bin ziemlich sicher, dass das Problem ist etwas einfach, aber ich habe nicht genug Programme auf OS X zu beachten Sie die pratfalls ...

kompiliert

Der primäre Zweck TCC für die Installation war libtcc zu bekommen, damit ich mit dynamischer Code-Generierung von Ruby (im Fall, der einen Unterschied macht :-P) experimentieren konnte

Danke!

War es hilfreich?

Lösung

Ich werde nun meine Kommentare konsolidieren.

Es scheint einige Probleme zu sein.

  1. Es hat sich für die x86-Registerzugriff wie von Mac OS 10.5 eine Änderung des Namensschema gewesen. Siehe Zugang EIP und EBP über ucontext auf OS X . Dies wird Hacking die Quelle benötigen, bis der Betreuer überzeugt werden kann Mac OS X zu unterstützen.
  2. Die ausführbaren Formate unterstützt durch tcc nicht überlappen mit denen, dass Mac OS X nativ ausgeführt wird. Allerdings XBinary kann diese Adresse. (Finde ich nicht entweder ein fink Paket oder ein Possiblity von Laden / Ausführen ELF-Dateien auf OSX
  3. .

Andere Tipps

Ich habe gerade einige ernsthafte Zeit damit verbracht, auf osx zu machen tcc laufen. Ich habe mehrere Updates enthalten, darunter auch die von der Antwort oben, und jetzt sind sie alle in der Entwicklungs-Repository auf http://repo.or.cz/w/tinycc.git . Der Aufbau, sollten einige Tests und alle Beispiele arbeiten.

Ich bin nicht sicher, ob Sie sich bewusst sind, aber http://bellard.org/tcc/ Website Das gehört zu Fabrice Bellard, die dieses Projekt begann, ist nicht sehr regelmäßig aktualisiert werden. Vor allem, weil es nicht viele ‚offiziellen‘ ist tcc Releases. TCC ist eines jener Projekte, die meist von Live-Quellen und Updates lebt. Also, wenn Sie dies noch einmal versuchen wollen, gehen Sie bitte auf http://repo.or.cz/ w / tinycc.git und erhalten den 'Mob' Zweig (nicht 'Master'). Bitte finden Sie unter http://repo.or.cz/w/tinycc.git für Details und tritt die Mailing-Liste zu beteiligen.

Die Fehler können durch Bearbeiten Configure-Skript von TCC-Paket behoben werden (ver 0.9.25).

In dem Configure-Skript, Zeile 36, sagt cpu = uname -m Wenn Sie uname -m in der Konsole von Mac OS X laufen, druckt es "i386", auch wenn es sich um ein 64-Bit-System ist.

Eine Lösung ist diese Zeile Kommentar aus, und ersetzen Sie es mit cpu = x86_64,

Dann werden einige Kompilieren Fehler wegen der Registernamenskonventionen in Mac OS X zeigen, wie durch Dmckee in diesem Thread erwähnt.

Meine Lösung ist, ein paar Zeilen zu libtcc.c um Zeile 1512 hinzuzufügen. Schließlich wird es aussehen

#ifdef __DARWIN_UNIX03
        *paddr = uc->uc_mcontext->__ss.__rip;
#else
        *paddr = uc->uc_mcontext.gregs[REG_RIP];
#endif
        return 0;
    } else {
#ifdef __DARWIN_UNIX03
        fp = uc->uc_mcontext->__ss.__rbp;
#else
        fp = uc->uc_mcontext.gregs[REG_RBP];
#endif

Es kompiliert dann.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top