升级到XCode 4后无法链接ppc

升级到XCode 4后无法链接ppc,xcode,macos,xcode4,universal-binary,powerpc,Xcode,Macos,Xcode4,Universal Binary,Powerpc,我接着介绍了如何在升级到XCode 4后使10.4 SDK与PPC一起工作。我能够编译,但它在链接时出错 作为补充,我不是使用XCode本身,而是使用它附带的gcc工具链。(这是使用makefiles的大型跨平台项目的一部分。) 下面是一个示例生成文件: CXX=g++-4.0 CXXFLAGS=-arch i386 -arch ppc -isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4 helloworld:

我接着介绍了如何在升级到XCode 4后使10.4 SDK与PPC一起工作。我能够编译,但它在链接时出错

作为补充,我不是使用XCode本身,而是使用它附带的gcc工具链。(这是使用makefiles的大型跨平台项目的一部分。)

下面是一个示例生成文件:

CXX=g++-4.0
CXXFLAGS=-arch i386 -arch ppc -isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4

helloworld: helloworld.o
    $(CXX) $^ -o $@ $(CXXFLAGS)
使用helloworld.cpp:

#include <stdio.h>

int main(void) {
    printf("hello world \n");
    return 0;
}

顺便说一句,这个确切的生成文件在XCode 3系统上工作得很好。

因为您使用的是命令行gcc(Unix开发包),所以将使用的不是
/Developer
/Xcode3
的gcc,而是
/usr
的gcc,我没有触及我最初的描述。要将PPC支持恢复到命令行GCC,您必须至少执行jas指出的操作。或者,您可以更改Makefile以使用来自
/Developer
的gcc(在执行这些命令之前,我在当前工作目录中创建了helloworld.cpp):


您可以安全地忽略这两个警告。不幸的是,GCC 4.0不支持
-mno长分支
,这是避免长分支所必需的。

好的,我再次回答了你的问题,希望这两种解决方案中的任何一种都能解决你的问题。使用
/Developer/usr/bin/g++-4.0
都可以。但是,在使用
/usr/bin/g++-4.0
时,没有帮助。我的解决方法是将
/usr/bin/g++-4.0
符号链接到
/Developer/usr/bin/g++-4.0
。无论如何,谢谢你让我走上正轨!
$ make
g++-4.0 -arch i386 -arch ppc -isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4   -c -o helloworld.o helloworld.cpp
g++-4.0 helloworld.o -o helloworld -arch i386 -arch ppc -isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4
ld: in /Developer/SDKs/MacOSX10.4u.sdk/usr/lib/crt1.o, in section __TEXT,__text reloc 1: sectionForNum(4) section number not for any section for architecture ppc
collect2: ld returned 1 exit status
lipo: can't open input file: /var/folders/NK/NK2TdejFFfOupEszIr4fG++++TM/-Tmp-//ccryAbut.out (No such file or directory)
make: *** [helloworld] Error 1
$ /Developer/usr/bin/g++-4.0 -arch i386 -arch ppc -isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4   -c -o helloworld.o helloworld.cpp
$ /Developer/usr/bin/g++-4.0 helloworld.o -o helloworld -arch i386 -arch ppc -isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4
ld: warning: object file compiled with -mlong-branch which is no longer needed. To remove this warning, recompile without -mlong-branch: /Developer/SDKs/MacOSX10.4u.sdk/usr/lib/crt1.o
ld: warning: object file compiled with -mlong-branch which is no longer needed. To remove this warning, recompile without -mlong-branch: /Xcode3/usr/bin/../lib/gcc/powerpc-apple-darwin10/4.0.1/crt3.o
$ ./helloworld 
hello world