2011-08-05 3 views
1

필자는 과거에 Linux/Windows에서 잘 작동했지만 OSX에서는 항상 골칫거리였던 기존 스크립트를 사용하여 OSX 용 ps2 (playstation 2) 툴 체인을 구축하는 중입니다.크로스 gcc가 네이티브를 'as'로 호출하는 이유는 무엇입니까?

ee-gcc -B/Users/gilligan/ps2toolchain/build/newlib-1.10.0/build-ee/ee/newlib/ -isystem /Users/gilligan/ps2toolchain/build/newlib-1.10.0/build-ee/ee/newlib/targ-include -isystem /Users/gilligan/ps2toolchain/build/newlib-1.10.0/newlib/libc/include -DPACKAGE=\"newlib\" -DVERSION=\"1.10.0\" -I. -I../../../../../newlib/libc/stdlib -O2 -DMALLOC_ALIGNMENT=16 -DMISSING_SYSCALL_NAMES -I../../targ-include -I../../../../../newlib/libc/../libc/include -fno-builtin -G0 -g -c ../../../../../newlib/libc/stdlib/__adjust.c ee-gcc -B/Users/gilligan/ps2toolchain/build/newlib-1.10.0/build-ee/ee/newlib/ -isystem /Users/gilligan/ps2toolchain/build/newlib-1.10.0/build-ee/ee/newlib/targ-include -isystem /Users/gilligan/ps2toolchain/build/newlib-1.10.0/newlib/libc/include -DPACKAGE=\"newlib\" -DVERSION=\"1.10.0\" -I. -I../../../../../newlib/libc/stdlib -O2 -DMALLOC_ALIGNMENT=16 -DMISSING_SYSCALL_NAMES -I../../targ-include -I../../../../../newlib/libc/../libc/include -fno-builtin -G0 -g -c ../../../../../newlib/libc/stdlib/__exp10.c FATAL:/usr/bin/../libexec/gcc/darwin/x86_64/as: I don't understand 'G' flag! make[3]: * [__exp10.o] Error 1 make[3]: * Waiting for unfinished jobs.... FATAL:/usr/bin/../libexec/gcc/darwin/x86_64/as: I don't understand 'G' flag! make[3]: * [__adjust.o] Error 1 make[2]: [all-recursive] Error 1 make[1]: [all-recursive] Error 1 make: * [all-target-newlib] Error 2

여기서 주목해야 할 것은 :

내가 지금 직면하고 문제는 내가 십자가 GCC는 분명히 대신 '로'기존의 십자가 '로'네이티브를 호출하는 지점에 도착한다는 것입니다 (매우 읽을 수없는 미안) ee-gcc/usr/bin/../libexec/gcc/darwin/x86_64/as에서 'as'를 호출합니다. 즉, ee-as가 아닌 시스템 기본 시스템입니다. 어떻게 이럴 수있어 ?

'ee-gcc -print-search-dirs'의 출력 확인 실제로 ee-as가 지정된 경로 중 하나에 있음을 알 수 있으며 실행 파일임을 확인했습니다.

모든 데이터에 대한 액세스 권한이 없어도 누군가를 생각할 수있는 아이디어가 있습니다. ee-gcc가 어셈블러를 원래의 방법으로 해결하는 방법을 이해할 수 없습니다. 어셈블러 바이너리 선택은 어떻게 작동합니까?

UPDATE 입력 주셔서 감사하지만 난 모든 일이 처음에 예상했던 것보다 더 깨진 두려워. libgcc2.c

/Users/gilligan/Development/ps2dev/ps2toolchain/build/gcc-3.2.2/build-ee-stage1/gcc/xgcc -B/Users/gilligan/Development/ps2dev/ps2toolchain/build/gcc-3.2.2/build-ee-stage1/gcc/ -B/usr/local/ps2dev/ee//ee/bin/ -B/usr/local/ps2dev/ee//ee/lib/ -isystem /usr/local/ps2dev/ee//ee/include -O2 -DIN_GCC -DCROSS_COMPILE -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -isystem ./include -G 0 -g -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED -Dinhibit_libc -I. -I. -I../../gcc -I../../gcc/. -I../../gcc/config -I../../gcc/../include -DL_muldi3 -c ../../gcc/libgcc2.c -o libgcc/./_muldi3.o In file included from ../../gcc/libgcc2.c:44: ../../gcc/libgcc2.h:242: internal error: Segmentation fault: 11 Please submit a full bug report, with preprocessed source if appropriate. See for instructions. make[2]: * [libgcc/./_muldi3.o] Error 1 make[1]: [libgcc.a] Error 2 make: ** [all-gcc] Error 2

을 처리하는 동안 이제 GCC (LLVM-GCC-4.2) 내가 관련 버그 리포트/패치하지만 아직까지 주사위를 위해 구글 시작 segfaulting된다. 내가 줄 줄 알았어. 입력에 다시 한번 감사드립니다. 해결

+0

"AS = ee-as make"를 강제 실행하려고 했습니까? – j4x

답변

1

어셈블러 경로는 기계 사양

gcc -dumpspecs 

에 AFAIK이며 -specs= 옵션 사양을 대체 할 수 있습니다 *invoke_as: 섹션

로 본다.

+1

커맨드 라인의'-B'는 컴파일러/어셈블러/링커 바이너리의 검색 경로를 오버라이드해야합니다 ... –

+0

R ..하지만 gcc는 어떤 이름으로 시도합니까? – osgx

+0

나는'-B'로 주어진 경로에서'as '와 target-name-prefixed 버전을 찾는다 고 생각합니다. –

관련 문제