質問

誰もが正常にコンパイルされましたか 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

この問題は簡単なことだと確信していますが、Pratfallsを認識するのに十分なプログラムをOS Xにまとめていません...

TCCをインストールするための主な目的は、libtccを取得して、Rubyからの動的なコード生成の実験を開始できることでした(違いが生じる場合:p)

ありがとう!

役に立ちましたか?

解決

今すぐコメントを統合します。

いくつかの問題があるようです。

  1. Mac OS 10.5のX86レジスタアクセスの命名スキームに変更がありました。見る OS XのUContextを介してEIPとEBPにアクセスします. 。これには、メンテナーがMac OS Xをサポートするように確信できるまで、ソースをハッキングする必要があります。
  2. でサポートされている実行可能ファイル tcc Mac OS Xがネイティブに実行されるものと重複しないでください。でも、 Xbinary これに対処するかもしれません。 (どちらも見つかりませんでした フィンク パッケージまたはa MacPorts ただし、パッケージはまだインストールされていません。私がそうするかどうかはわかりません - これは深い魔法であり、理論的には本当に悪いことをすることができます。)ああ...これもすでにそうでした: OSX上のELFファイルのロード/実行の可能性.

他のヒント

TCCをOSXで実行するために深刻な時間を費やしました。上記の回答からのものを含むいくつかの修正を含めましたが、現在はすべて開発リポジトリにあります。 http://repo.or.cz/w/tinycc.git. 。構築、いくつかのテスト、およびすべての例が機能するはずです。

あなたが知っているかどうかはわかりませんが http://bellard.org/tcc/ このプロジェクトを開始したファブリス・ベラードに属するサイトは、非常に定期的に更新されていません。主に、「公式」TCCリリースがあまりないからです。 TCCは、主にライブソースやアップデートから外れているプロジェクトの1つです。これをもう一度試してみたい場合は、行ってください http://repo.or.cz/w/tinycc.git 「Mob」ブランチ(「マスター」ではなく)を取得します。参照してください http://repo.or.cz/w/tinycc.git 詳細については、メーリングリストに参加して参加してください。

エラーは、TCCパッケージの編集Configureスクリプト(Ver 0.9.25)で修正できます。

構成スクリプトで、36行目はCPU =uname -mMac OS XのコンソールでUname -mを実行すると、64ビットシステムであっても「i386」を印刷します。

解決策は、この行をコメントし、CPU = x86_64に置き換えることです。

このスレッドでDMCKEEが言及したように、Mac OS Xのレジスタ命名規則のために、いくつかのコンパイルエラーが表示されます。

私の修正は、1512行の周りにlibtcc.cに数行を追加することです。最後に、それは次のようになります

#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