CodeSourcery를 사용하여 TinyCC를 크로스 컴파일할 때 발생하는 문제

CodeSourcery를 사용하여 TinyCC를 크로스 컴파일할 때 발생하는 문제

크로스컴파일을 하려고 하는데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/tcfile not found

답변1

이 오류 메시지는 ARM 컴파일러를 사용하여 플랫폼(x86/64)용 코드를 컴파일하려고 하지만 컴파일러가 작동하지 않음을 나타냅니다. 구성 스크립트가 올바른 대상(ARM 대상 대신 "TCC_TARGET_X86_64")을 추측하지 못했습니다.

--cpu=armv7a어쩌면 당신은 (또는 정확히 당신이 가지고 있는 것) options 및/또는 options 가 필요할 수도 있습니다 --cross-prefix=arm-none-linux-gnueabi-. 이전에 make clean.

관련 정보