8

XCode 4 にアップグレードした後、10.4 SDK を PPC で動作させる方法については、次の手順に従いました。コンパイルはできますが、リンク時にエラーが発生します。

追加のしわとして、私は XCode 自体を使用していませんが、付属の gcc ツールチェーンを使用しています。(これは、メイクファイルを使用する大規模なクロスプラットフォーム プロジェクトの一部です。)

サンプルのメイクファイルは次のとおりです。

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;
}

そして、ここにその出力があります:

$ 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

ところで、この正確なメイクファイルは XCode 3 システムで正常に動作します。

4

1 に答える 1

5

コマンド ライン gcc (Unix 開発パッケージ) を使用しているため、 or の GCC ではなく、/Developer元の説明には触れていない の GCC/Xcode3が使用されます。PPC サポートをコマンド ライン GCC に復元するには、少なくともこの回答で/usrjas が指摘したことを実行する必要があります。または、代わりに gcc を使用するように Makefile を変更します(これらのコマンドを実行する前に、現在の作業ディレクトリに helloworld.cpp を作成しました)。/Developer

$ /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 

2 つの警告は無視しても問題ありません。-mno-long-branch残念ながら、GCC 4.0 は長い分岐を避けるために必要な をサポートしていません。

于 2011-03-28T12:01:35.113 に答える