在macOS Mojave上交叉编译到目标PowerPC时,GCC 8一致性测试失败

在macOS Mojave上交叉编译到目标PowerPC时,GCC 8一致性测试失败,macos,gcc,compilation,cross-compiling,powerpc,Macos,Gcc,Compilation,Cross Compiling,Powerpc,我正在尝试为运行macOS Mojave的英特尔MacBook Pro获得一个交叉编译器,以便为PowerPC G5 Mac编译。我已尝试按照中的步骤的修改版本进行操作,但我的configure命令失败,并显示以下错误消息: Assertion failed: (*offset_ptr == end_prologue_offset), function ParsePrologue, file /SourceCache/dwarf_utilities/dwarf_utilities-121.1/s

我正在尝试为运行macOS Mojave的英特尔MacBook Pro获得一个交叉编译器,以便为PowerPC G5 Mac编译。我已尝试按照中的步骤的修改版本进行操作,但我的configure命令失败,并显示以下错误消息:

Assertion failed: (*offset_ptr == end_prologue_offset), function ParsePrologue, file /SourceCache/dwarf_utilities/dwarf_utilities-121.1/source/DWARFDebugLine.cpp, line 619.
collect2: fatal error: dsymutil terminated with signal 6 [Abort trap: 6]
compilation terminated.
*** The command 'gcc-8 -o conftest -g -O2   conftest.c' failed.
*** You must set the environment variable CC to a working compiler.
configure:5025: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE_URL ""
| /* end confdefs.h.  */
|
| #if (__GNUC__ < 4) || (__GNUC__ == 4 && __GNUC_MINOR__ < 5)
| #error -static-libstdc++ not implemented
| #endif
| int main() {}
我的配置命令是:

CC=gcc-8 CXX=g++-8../gcc-8.3.0/configure\
前缀=/opt/gcc/pc/ 8——禁用NLLS-禁用多个LIB语言——启用语言= C、C++、Objc、Obj-C++、LTO -Ty-TyfF2
--target=powerpc64-apple-darwin10.8.0——带sysroot=/Developer/SDKs/MacOSX10.5.sdk\
CFLAGS_FOR_TARGET=“-isysroot/Developer/SDKs/MacOSX10.5.sdk-mmacosx version min=10.5-g-O2”\
LDFLAGS_FOR_TARGET=“-isysroot/Developer/SDKs/MacOSX10.5.sdk-mmacosx version min=10.5”\
CXXFLAGS_FOR_TARGET=“-isysroot/Developer/SDKs/MacOSX10.5.sdk-mmacosx version min=10.5-g-O2”
我的配置日志(可用)在错误消息后声明:

Assertion failed: (*offset_ptr == end_prologue_offset), function ParsePrologue, file /SourceCache/dwarf_utilities/dwarf_utilities-121.1/source/DWARFDebugLine.cpp, line 619.
collect2: fatal error: dsymutil terminated with signal 6 [Abort trap: 6]
compilation terminated.
*** The command 'gcc-8 -o conftest -g -O2   conftest.c' failed.
*** You must set the environment variable CC to a working compiler.
configure:5025: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE_URL ""
| /* end confdefs.h.  */
|
| #if (__GNUC__ < 4) || (__GNUC__ == 4 && __GNUC_MINOR__ < 5)
| #error -static-libstdc++ not implemented
| #endif
| int main() {}
我还注意到,在没有指定目标的命令配置的输出中,它表示
g++
接受
-static libstdc++-static libgcc
,而在交叉编译器配置命令输出中,它表示不接受。我查看了配置脚本,看看它在那里做了什么,它试图编译并链接到C++ C++代码,结果最终失败了。因此,问题似乎要么是缺少安装的静态库,要么是链接器或编译器的问题


编辑:我还安装了用于Xcode 10.2.1(10E1001)的Xcode 10.2.1和命令行工具

编辑2:我尝试使用以下命令配置Linux x86-64版本:

CC=gcc-8 CXX=g++-8 ../gcc-8.3.0/configure \
--prefix=/opt/gcc/x86-64/8 --disable-nls --disable-multilib --enable-languages=c,c++,objc,obj-c++,lto --with-dwarf2 \
--target=x86_64-unknown-linux-gnu
没有首先将旧版本的
dsymutil
添加到我的路径中(我第一次尝试该命令时没有删除该路径),这确实成功地创建了一个配置文件(请注意,macOS还附带了较新版本的
dysmutil
,该版本不再支持PowerPC设备,而较旧版本的位置专门添加到路径的前面,以便首先找到它)

此外,输出表明
g++
也接受了
-static libstdc++-static libgcc
。由于我使用的是同一个编译器,我认为这表明问题在于Mac链接器或静态库。然而,从我对
dymutil
和控制台日志的理解来看,这不是原因我还尝试在路径中使用旧版本的
dysmutil
直接调用失败的命令本身,但没有它(没有其他更改),并且它会给出相同的错误消息(断言失败等),没有它也不会给出错误消息

编辑3:所以我做了一些搜索,显然
static libstdc++
static libgcc
是GCC的一部分,需要构建GNU-binutils(我已经有了)。我使用的是文章中定义的
ld
(如果目标是PowerPC,它基本上只调用苹果系统
ld
)因为GNU binutils'ld不支持达尔文。这可能是问题的根源吗