2009-07-22 35 views
24

Tôi chắc chắn phải có cách để thực hiện việc này. Như bạn có thể nhận thức được phiên bản mới nhất của Xcode (và trên thực tế tôi nghĩ rằng tất cả các phiên bản của Xcode) trên Leopard đi kèm với GCC 4.0.1 và GCC 4.2. GCC 4.0.1 là trình biên dịch hệ thống mặc định trong khi GCC 4.2 là một trình biên dịch tùy chọn bạn có thể đặt trong các thiết lập dự án Xcode.Đặt GCC 4.2 làm trình biên dịch mặc định trên Mac OS X Leopard

Có ai biết cách đặt GCC 4.2 làm trình biên dịch mặc định cho tất cả các tùy chọn không? Tốt hơn là sử dụng dòng lệnh cũng như cấu hình các script vẫn sử dụng GCC 4.0.1 thay vì GCC 4.2 bất kể tôi làm gì trong Xcode. Tôi giả định nó chỉ đơn giản là một trường hợp thay đổi một biến đường dẫn hoặc một số như vậy nhưng tôi stumped ngày này.

Mọi trợ giúp đều được đánh giá cao. Cảm ơn.

Trả lời

19

dòng lệnh sử dụng cho tất cả các cấu hình kịch bản:

cd /usr/bin 
    rm cc gcc c++ g++ 
    ln -s gcc-4.2 cc 
    ln -s gcc-4.2 gcc 
    ln -s c++-4.2 c++ 
    ln -s g++-4.2 g++ 

Thực hiện một kỷ lục trong những mục tiêu liên kết hiện nay, vì vậy bạn có thể khôi phục chúng nếu bạn muốn.

Nếu bạn không muốn thay đổi các thiết lập hệ thống rộng, thêm một thư mục vào PATH trước/usr/bin (nói, $HOME/bin), và làm cho các liên kết tượng trưng có

tôi đã không kiểm tra xem liệu điều này ảnh hưởng Các dự án Xcode, vì tôi không sử dụng Xcode (chỉ dòng lệnh).

+0

Điều này được sử dụng để xử lý bởi tập lệnh 'gcc_select', nhưng có vẻ như Leopard/Xcode 3.1 không cung cấp nữa? Tôi đã không sử dụng OS X trong nhiều năm, vì vậy tôi hơi mất liên lạc ... – ephemient

+0

Cảm ơn bạn đã khắc phục sự cố. Chỉ cần bỏ qua một bên nếu có ai đó đang lên kế hoạch thực hiện điều này, tôi khuyên bạn nên đặt các liên kết mới trong một thư mục khác để nếu bạn muốn quay lại các thiết lập ban đầu, bạn chỉ cần xóa các liên kết hoặc chuyển chúng sang một danh mục. – Cromulent

+0

Martin, một câu hỏi có liên quan, làm cách nào để bạn có thể cho setup.py/pydistutils.cfg CC và quốc gia nào được sử dụng? Ví dụ: Ví dụ: tôi chỉ sử dụng gpc-4.2 -arch ppc (vì gcc-4.2 của tôi không có /usr/bin/i686-apple-darwin8-g++-4.2.1). Cảm ơn – denis

18

Trong Cửa sổ thông tin dự án hoặc mục tiêu đặt thiết lập bản dựng "Phiên bản trình biên dịch C/C++" (GCC_VERSION).

Hoặc trong Cửa sổ thông tin đích, bạn có thể thay đổi "Quy tắc hệ thống C" thành phiên bản GCC yêu thích của bạn.

Cập nhật: Về dòng lệnh, tôi sẽ để Leopard quyết định trình biên dịch mặc định là gì. Nếu bạn muốn sử dụng một trình biên dịch khác với các công cụ như Autotools cấu hình bạn đã tốt hơn để xác định biến CC.

CC=gcc-4.2 ./configure 

hoặc

export CC=gcc-4.2 
+0

Thật không may tôi đã biết về những điều đó, nhưng chúng là cho mỗi dự án. Tôi đang nói về khi bạn gọi GCC từ dòng commmand. Không có vấn đề gì tôi đặt các quy tắc cho trong Xcode nó sẽ luôn luôn sử dụng GCC 4.0.1 từ dòng lệnh. – Cromulent

+0

lỗi của tôi xin lỗi. Tôi đang cập nhật nó – IlDan

+6

Tôi thấy 'xuất CC = gcc-X.Y' thực tế hơn (và * nix-like) khi so sánh với giải pháp rm/ln -s. Dễ dàng hoàn nguyên nếu xảy ra sự cố, dễ cài đặt người dùng/toàn hệ thống, chỉ yêu cầu người dùng chỉnh sửa .bash_profile (hoặc trình bao rc yêu thích của bạn). – lsdr

16

Kể từ không của Apple cũng không Darwin cổng có chương trình gcc_select để thay đổi phiên bản mặc định của trình biên dịch Hệ thống (như tồn tại trên GNU/Linux), tôi muốn được ở bên an toàn với XCode (và phần còn lại của hệ thống) và sẽ khuyên bạn nên để lại các liên kết tượng trưng như chúng và thay vào đó thiết lập các biến môi trường ghi đè phiên bản GCC nào sẽ sử dụng.

Trong file .profile của tôi, tôi đã sau

export CC=/usr/bin/gcc-4.2 
export CPP=/usr/bin/cpp-4.2 
export CXX=/usr/bin/g++-4.2 

Và tôi biên soạn thành công các thư viện sau với GCC 4.2 từ nguồn.

  • OpenSSL
  • libjpeg
  • libpng
  • zlib
  • gst

Tuy nhiên ... tôi có thể không nhận được Tăng 1.39 để xác nhận các biến môi trường, do đó, để biên dịch Boost với GCC 4.2, tôi cần phải thay đổi các liên kết tượng trưng trong/usr/bin/để chỉ ra gcc v4.2

Sau khi các thư viện Boost được biên soạn xong GCC 4.2 Tôi đã khôi phục các liên kết tượng trưng trở lại phiên bản hệ thống ban đầu gcc-4.0.

+0

Đã thử điều này và nó không thay đổi trình biên dịch mặc định của tôi. – user124384

2

Vì tôi cần phải xây dựng những thứ mà CC env bị bỏ qua và tôi kết thúc thường xuyên chuyển đổi, tôi đã viết một gcc_select đơn giản có đầu óc trong Python. Nghĩ tôi cũng có thể đăng nó ở đây. Gọi nó với arg hoặc 4.0 hoặc 4.2 hoặc không có arg để xem các liên kết hiện hành. Sẽ cần phải thay đổi nếu bạn có các phiên bản khác so với 4.0 và 4.2:

#!/usr/bin/python 
import sys 
import os 

os.chdir('/usr/bin') 

files = ['cc', 'gcc', 'c++', 'g++'] 

if '4.0' in sys.argv: 
    ver = '4.0' 
elif '4.2' in sys.argv: 
    ver = '4.2' 
else: 
    print "Unknown gcc version. Current setting:" 
    os.system('ls -al %s' % ' '.join(files)) 
    sys.exit(1) 

os.system('rm %s' % ' '.join(files)) 
for f in files: 
    os.system('ln -s %s-%s %s' % (f, ver, f)) 

print "Changed to gcc version %s" % ver 
3

Im kinh nghiệm của tôi (giới hạn), thay đổi CC trong .profile không thay đổi Lion (10.7.2) mặc định cho i686-apple-darwin11-llvm -gcc-4.2. Tôi tự hỏi nếu điều này có bất cứ điều gì để làm với sym liên kết riêng của Apple: một phần: ls -la /usr/bin | grep .*gcc.*:.

lrwxr-xr-x  1 root wheel  12 25 oct 19:31 cc -> llvm-gcc-4.2 
lrwxr-xr-x  1 root wheel  12 25 oct 19:31 gcc -> llvm-gcc-4.2 
lrwxr-xr-x  1 root admin  32 25 oct 19:31 llvm-gcc-4.2 -> ../llvm-gcc-4.2/bin/llvm-gcc-4.2 

Tôi cảnh giác về vi phạm những điều này và bổ sung của riêng tôi để usr/bin/gcc-4.2 mỗi Martin v Löwis của câu trả lời.

2

Tôi có thể sai, nhưng tôi nghĩ đó là những gì mà Xcode chọn?

xcode-select --switch /path_to_tool_suite 

Như tôi đã nói, tôi không 100% về điều này, nhưng tôi tin rằng nó sẽ đặt mặc định cho tất cả các chương trình bao gồm Terminal và các ứng dụng khác gọi vào hệ điều hành để sử dụng trình biên dịch.

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