2010-05-13 22 views
5

Tôi đang cố tạo một bản nhị phân Universal trên MacOSX với g ++. Tuy nhiên, nó không thực sự hiệu quả. Tôi đã thử với mã này đơn giản giả:g ++ trên MacOSX không hoạt động với -arch ppc64

#include <iostream> 
using namespace std; 
int main() { 
    cout << "Hello" << endl; 
} 

này hoạt động tốt:

% g++ test.cpp -arch i386 -arch ppc -arch x86_64 -o test 
% file test 
test: Mach-O universal binary with 3 architectures 
test (for architecture i386): Mach-O executable i386 
test (for architecture ppc7400): Mach-O executable ppc 
test (for architecture x86_64): Mach-O 64-bit executable x86_64 

Tuy nhiên, đây không:

% g++ test.cpp -arch i386 -arch ppc -arch x86_64 -arch ppc64 -o test 
In file included from test.cpp:1: 
/usr/include/c++/4.2.1/iostream:44:28: error: bits/c++config.h: No such file or directory 
In file included from /usr/include/c++/4.2.1/ios:43, 
       from /usr/include/c++/4.2.1/ostream:45, 
       from /usr/include/c++/4.2.1/iostream:45, 
       from test.cpp:1: 
/usr/include/c++/4.2.1/iosfwd:45:29: error: bits/c++locale.h: No such file or directory 
/usr/include/c++/4.2.1/iosfwd:46:25: error: bits/c++io.h: No such file or directory 
In file included from /usr/include/c++/4.2.1/bits/ios_base.h:45, 
       from /usr/include/c++/4.2.1/ios:48, 
       from /usr/include/c++/4.2.1/ostream:45, 
       from /usr/include/c++/4.2.1/iostream:45, 
       from test.cpp:1: 
/usr/include/c++/4.2.1/ext/atomicity.h:39:23: error: bits/gthr.h: No such file or directory 
/usr/include/c++/4.2.1/ext/atomicity.h:40:30: error: bits/atomic_word.h: No such file or directory 
... 

Bất cứ ý tưởng tại sao lại như vậy?

Tôi đang sử dụng MacOSX 10.6. Tôi đã cài đặt Xcode 3.2.2 với tất cả các SDK đi kèm. GCC 4.2 là mặc định. GCC 4.0 tạo ra một số lỗi khác nhau, mặc dù hoạt động tương tự.

Trả lời

7

hỗ trợ ppc64 đã bị xóa trong Snow Leopard. Bạn vẫn có thể sử dụng ppc64 nếu bạn xây dựng và liên kết với Mac OS X 10.5 SDK.

Hãy thử lệnh sau tại cửa sổ dòng lệnh:

g++ test.cpp -arch i386 -arch ppc -arch x86_64 -arch ppc64 -mmacosx-version-min=10.5 -isysroot/Developer/SDKs/MacOSX10.5.sdk -DMACOSX_DEPLOYMENT_TARGET=10.5 -o test 

Hoặc cho việc sử dụng 10,4 SDK:

g++-4.0 test.cpp -arch i386 -arch ppc -arch x86_64 -arch ppc64 -mmacosx-version-min=10.4 -isysroot/Developer/SDKs/MacOSX10.4u.sdk -DMACOSX_DEPLOYMENT_TARGET=10.4 -o test 

Lưu ý, nếu bạn muốn sử dụng 10,4 SDK, bạn sẽ phải sử dụng gcc 4.0 (hoặc g ++ 4.0). GCC 4.2 của Apple không hỗ trợ SDK 10.4.

+0

Rõ ràng, Apple không bận tâm cập nhật trang người dùng gcc. – WhirlWind

+4

Vâng nó không thực sự là một vấn đề GCC. đó là không có ppc64 trong MacOSX10.6.sdk, không phải là GCC không hỗ trợ ppc64. gcc * DOES * vẫn hỗ trợ ppc64. Chỉ có không có thời gian chạy C++ với hỗ trợ ppc64 trong SDK 10.6. –

+0

Tuyệt vời, cảm ơn vì điều đó! Lệnh đó hoạt động. Nó trông như thế nào với SDK 10.4? Bởi vì tôi không thể làm điều đó. – Albert

Các vấn đề liên quan