クロスコンパイルをしようとしています。Homas Preud'hommeのTinyCCバージョン次のコマンドを使用して
./configure --cc=arm-none-linux-gnueabi-gcc --prefix=/home/shushant/tinycc/tc
実行後、次のエラーメッセージが表示されますmake install
make: Circular Makefile <- Makefile dependency dropped.
make -C lib native
make[1]: Entering directory `/home/shushant/tinycc/lib' arm-none-linux-gnueabi-gcc -c alloca86_64.S -o x86_64/alloca86_64.o -I.. -Wall -g -O2 -fno-strict-aliasing -Wno-pointer-sign -Wno-sign-compare -Wno-unused-result -DTCC_TARGET_X86_64
alloca86_64.S: Assembler messages:
alloca86_64.S:7: Error: expression too complex -- `pop %rdx'
alloca86_64.S:11: Error: ARM register expected -- `mov %rdi,%rax'
alloca86_64.S:13: Error: ARM register expected -- `add $15,%rax'
alloca86_64.S:14: Error: ARM register expected -- `and $-16,%rax'
alloca86_64.S:15: Error: bad instruction `jz p3'
alloca86_64.S:28: Error: ARM register expected -- `sub %rax,%rsp'
alloca86_64.S:29: Error: ARM register expected -- `mov %rsp,%rax'
alloca86_64.S:35: Error: expression too complex -- `push %rdx'
alloca86_64.S:36: Error: bad instruction `ret'
alloca86_64.S:40: Error: junk at end of line, first unrecognized character is `,'
make[1]: *** [x86_64/alloca86_64.o] Error 1
make[1]: Leaving directory `/home/shushant/tinycc/lib'
make: *** [libtcc1.a] Error 2
一部のバイナリが正常に作成されましたが、Androidエミュレータで実行しようとしたときに、間違ったディレクトリ/home/shushant/tinycc
(ディレクトリのルート)に生成されたバイナリがデバイスでサポートされていないことがわかりました。どうすれば解決できますか?/home/shushant/tinycc/tc
file not found
答え1
このエラーメッセージは、ARMコンパイラを使用してプラットフォーム(x86/64)用のコードをコンパイルしようとしていますが、コンパイラが機能していないことを示します。構成スクリプトが正しいターゲット(ARMターゲットの代わりに「TCC_TARGET_X86_64」)を推測できませんでした。
--cpu=armv7a
多分あなたは(または正確にあなたが持っているもの)optionsおよび/またはoptionsを必要とするかもしれません--cross-prefix=arm-none-linux-gnueabi-
。以前にmake clean
。