Вопрос

Кто -нибудь успешно собрал TCC на OS X?

Из того, что я знаю, это должно быть возможно, но когда я запускаю, сделайте следующую ошибку:

$ 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 работает нормально и дает следующий выход:

$ ./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

Я почти уверен, что проблема является чем -то простым, но я не собирал достаточно программ на OS X, чтобы знать о Pratfalls ...

Основной целью установки TCC было получить LIBTCC, чтобы я мог начать экспериментировать с динамическим генерацией кода от Ruby (если это имеет значение:-P)

Спасибо!

Это было полезно?

Решение

Сейчас я консолидирую свои комментарии.

Похоже, есть несколько проблем.

  1. В схеме именования произошли изменения в схеме именования для доступа к регистре x86 по состоянию на Mac OS 10.5. Видеть Доступ EIP и EBP через UCEXTEXT на OS X. Анкет Это потребует взлома источника до тех пор, пока поддерживающий не может быть убежден поддержать Mac OS X.
  2. Исполняемые форматы, поддерживаемые tcc Не перекрывайте с теми, которые Mac OS X будет работать назначенным. Однако, Xbinary может обратиться к этому. (Я не нашел ни одного фик упаковка или Macports Пакет, однако, и еще не устанавливает его. Не уверен, что я буду-это глубокая магия, и теоретически мог бы сделать очень плохие вещи.) Ах ... это тоже так и было так: Возможность загрузки/выполнения файлов ELF на OSX.

Другие советы

Я только что провел серьезное время, пытаясь заставить TCC работать на OSX. Я включил несколько исправлений, в том числе из ответа выше, и теперь они все в репозитории разработки в http://repo.or.cz/w/tinycc.git. Анкет Строительство, некоторые тесты и все примеры должны работать.

Я не уверен, знаете ли вы, но http://bellard.org/tcc/ Сайт, который принадлежит Фабрису Белларду, который начал этот проект, не обновляется очень регулярно. Главным образом потому, что не так много «официальных» выпусков TCC. TCC - один из тех проектов, которые в основном живы из живых источников и обновлений. Так что, если вы хотите попробовать еще одну попытку, перейдите в http://repo.or.cz/w/tinycc.git и получить филиал «толпа» (не «мастер»). Пожалуйста, посмотри http://repo.or.cz/w/tinycc.git Для получения подробной информации и присоединяйтесь к списку рассылки, чтобы принять участие.

Ошибки могут быть исправлены путем редактирования сценария настройки пакета TCC (версия 0.9.25).

В скрипте настройки строка 36 говорит CPU =uname -mЕсли вы запускаете Uname -m в консоли Mac OS X, он печатает «i386», даже если это 64 -битная система.

Решение состоит в том, чтобы прокомментировать эту строку и заменить ее на CPU = x86_64,

Затем некоторые ошибки компиляции будут отображаться из -за соглашений о именованиях в Mac OS X, как упомянуто DMCKEE в этой теме.

Мое исправление состоит в том, чтобы добавить несколько строк в libtcc.c вокруг строки 1512. Наконец, это будет выглядеть как

#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

Тогда это компилирует.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top