我正在使用现有脚本为OSX构建ps2(playstation 2)工具链,该脚本过去在Linux / Windows上运行良好但在OSX上一直很麻烦。
我现在面临的问题是,我发现交叉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 ../../../../../ 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 ../../../../../ 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 致命:/ usr / bin /../ libexec / gcc / darwin / x86_64 / as:我不明白'G'旗帜! make [3]: * [__exp10.o]错误1 make [3]:* 等待未完成的工作.... 致命:/ usr / bin /../ libexec / gcc / darwin / x86_64 / as:我不明白'G'旗帜! make [3]: * [__adjust.o]错误1 make [2]: [all-recursive]错误1 make [1]: [all-recursive]错误1 make:* [all-target-newlib]错误2
这里需要注意的事情(抱歉不太可读)是 ee-gcc 从 / usr / bin /../ libexec / gcc / darwin / x86_64调用'as' / as 即系统本机而不是ee-as。怎么会这样?
检查' ee-gcc -print-search-dirs '的输出我可以看到ee-as确实在其中一个指定的路径中,我检查它是可执行的。
如果没有访问所有数据,可能很难说出来,但也许有人知道我能找到什么 - 我不明白ee-gcc是如何将其汇编程序解析为本机的。汇编程序二进制选择如何工作?
更新 感谢您的投入,但我担心整件事情比最初的预期更加破碎。现在gcc(llvm-gcc-4.2)在处理libgcc2.c时是segfaulting
/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 ../../ gcc -I ../../ gcc /。 -I ../../ gcc / config -I ../../ gcc /../ include -DL_muldi3 -c ../../gcc/libgcc2.c -o libgcc /./_ muldi3.o 在../../gcc/libgcc2.c:44中包含的文件中: ../../gcc/libgcc2.h:242:内部错误:分段错误:11 请提交完整的错误报告, 如果合适,使用预处理的来源。 请参阅说明。 make [2]: * [libgcc /./_ muldi3.o]错误1 make [1]: [libgcc.a]错误2 make:* * [all-gcc]错误2
我开始谷歌搜索相关的错误报告/补丁,但到目前为止还没有骰子。猜猜我准备好了。再次感谢您的投入。
答案 0 :(得分:1)
汇编程序路径解析是机器规范中的AFAIK
gcc -dumpspecs
并查看*invoke_as:
部分
您可以使用-specs=
选项覆盖规范。