pal*_*ogt 8 macos xcode powerpc universal-binary xcode4
我按照这些说明在升级到XCode 4之后如何让10.4 SDK使用PPC.我能够编译,但是在链接时出错.
作为一个额外的皱纹,我不是使用XCode本身,而是使用它附带的gcc工具链.(这是使用makefile的大型跨平台项目的一部分.)
这是一个示例makefile:
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)
Run Code Online (Sandbox Code Playgroud)
使用helloworld.cpp:
#include <stdio.h>
int main(void) {
printf("hello world \n");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是它的输出:
$ 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
Run Code Online (Sandbox Code Playgroud)
顺便说一句,这个确切的makefile在XCode 3系统上运行良好.
既然您使用的是命令行gcc(Unix开发包),而不是GCC /Developer或/Xcode3将要使用的,但是其中一个/usr,我没有触及我的原始描述.要恢复对命令行GCC的PPC支持,您必须至少执行此答案中指出的jas .或者您改变Makefile以改为使用gcc /Developer(我在执行这些命令之前在当前工作目录中创建了helloworld.cpp):
$ /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
Run Code Online (Sandbox Code Playgroud)
您可以放心地忽略这两个警告.不幸的是,GCC 4.0不支持-mno-long-branch,这对于避免长分支是必要的.
| 归档时间: |
|
| 查看次数: |
1631 次 |
| 最近记录: |