2011-03-23 21 views
8

पर अपग्रेड करने के बाद पीपीसी को लिंक करने में असमर्थ, मैंने these instructions का पालन किया, ताकि 10.4 एसडीके एक्सपीओडी 4 में अपग्रेड करने के बाद पीपीसी के साथ काम कर सके। मैं संकलन करने में सक्षम हूं, लेकिन यह लिंक समय पर त्रुटियों में है।एक्सकोड 4

एक अतिरिक्त झुर्रियों के रूप में, मैं एक्सकोड प्रति से उपयोग नहीं कर रहा हूं, लेकिन जीसीसी टूलचेन जो इसके साथ आता है। (यह एक बड़ी पार मंच परियोजना makefiles का उपयोग करता है का हिस्सा है।)

यहां नमूने makefile है:

#include <stdio.h> 

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

और यहाँ इसके उत्पादन है: एक helloworld.cpp साथ

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 [email protected] $(CXXFLAGS) 

:

$ 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 

बीटीडब्ल्यू, यह सटीक मेकफ़ाइल एक्सकोड 3 सिस्टम पर ठीक काम करता है।

+0

ठीक है, मैंने फिर से आपके प्रश्न का उत्तर दिया, उम्मीद है कि दोनों समाधानों में से कोई भी आपके मुद्दे को हल कर सकता है। – Mecki

उत्तर

5

आप कमांड लाइन जीसीसी (यूनिक्स विकास पैकेज) का उपयोग कर रहे हैं, नहीं /Developer या /Xcode3 की जीसीसी में इस्तेमाल किया जाएगा, लेकिन /usr में से एक है, जो मैं अपने मूल वर्णन छुआ है। कमांड लाइन जीसीसी में पीपीसी समर्थन बहाल करने के लिए, आपको कम से कम in this answer की ओर इशारा करते हुए क्या करना होगा। या फिर आप /Developer बजाय से जीसीसी उपयोग करने के लिए अपने Makefile को बदलने के लिए (मैं उन आदेशों को क्रियान्वित करने से पहले वर्तमान कार्यशील निर्देशिका में अपने 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 

आप सुरक्षित रूप से दो चेतावनी की अनदेखी कर सकते हैं। दुर्भाग्यवश जीसीसी 4.0 -mno-long-branch का समर्थन नहीं करता है, जो लंबी शाखाओं से बचने के लिए आवश्यक होगा।

+0

'/ डेवलपर/usr/bin/g ++ - 4.0' का उपयोग कर काम करता है। हालांकि, [आप जिस फिक्स से जुड़े हैं] (http://stackoverflow.com/questions/5333490/how-can-we-restore-ppc-ppc64-as-well-as-full-10-4-10-5- sdk-support-to-xcode-4/5380923 # 5380923) '/ usr/bin/g ++ - 4.0' का उपयोग करते समय सहायता नहीं करता है। मेरा कामकाज '/ usr/bin/g ++ - 4.0' से'/डेवलपर/usr/bin/g ++ - 4.0' सिमलिंक करना था। वैसे भी, मुझे सही रास्ते पर लाने के लिए धन्यवाद! – paleozogt