2011-12-02 41 views
39

Tôi đã cài đặt gcc 4.6. từ macports (để hỗ trợ C++ 0x). Nhưng khi tôi kiểm tra 'gcc --version`, nó đang hiển thị phiên bản cũ hơn. Làm thế nào để sử dụng gcc mới hơn được cài đặt bởi macports?Cách sử dụng gcc được cài đặt trong macports?

+0

bản sao có thể có của [Cập nhật GCC trên OSX] (http://stackoverflow.com/questions/837992/update-gcc-on-osx) – birryree

+0

Cũng xem [Sử dụng trình biên dịch bên phải] (https: //trac.macports .org/wiki/UsingTheRightCompiler) trên MacPorts wiki. – jww

Trả lời

7

Tôi nhớ nó là một cái gì đó như g++-mp-4.6. Tôi tin rằng nó đủ để thiết lập biến môi trường CXX cho điều đó.

+2

hoạt động. là có một cách để sử dụng nó theo mặc định để tôi không phải thay đổi tất cả các tập tin. – Nemo

+1

Gắn nó vào '.bashrc'? –

+4

Tại sao điều này được chấp nhận là câu trả lời hay nhất trong khi câu trả lời của Raim là câu trả lời đúng? –

2

Chỉ cần đảm bảo đường dẫn của macports đến trước trong số $PATH của bạn. Hoặc sử dụng gcc-mp-4.6 hoặc thứ gì đó tương tự.

+0

Hoặc loại bỏ cái cũ: P – jli

+3

@jli, cái từ '/ usr/bin'? Nghe có vẻ không phải là một ý tưởng tốt :) –

+0

@ MichaelKrelin-hacker bạn vẫn cần phải thiết lập gcc hoạt động như đã nêu ở trên. – Chris

92

Bạn có thể kiểm soát liên kết tượng trưng trong /opt/local/bin/gcc bằng cách sử dụng port select. Bạn có thể xem phiên bản có sẵn bằng cách sử dụng port select --list gcc. Bất cứ điều gì được liệt kê với tiền tố mp-as đề cập đến cổng riêng của MacPorts, gcc42 và llvm-gcc42 tham chiếu đến các trình biên dịch được Xcode của Apple cung cấp.

Ví dụ từ hệ thống của tôi:

$ port select --list gcc 
Available versions for gcc: 
    gcc42 
    llvm-gcc42 
    mp-gcc45 
    none (active) 
$ sudo port select --set gcc mp-gcc45 
Password: 
Selecting 'mp-gcc45' for 'gcc' succeeded. 'mp-gcc45' is now active. 

Sau đó, một trong hai mở một cửa sổ terminal mới hoặc vấn đề hash -r để làm cho bash nhận ra sự thay đổi.

+0

Tôi đã làm điều này, và khi tôi gõ 'port select --list gcc', nó nói rằng mp-gcc47 đang hoạt động. Tuy nhiên, khi tôi làm 'gcc --version', nó vẫn nói nó đang sử dụng phiên bản 4.2 ... Tôi đã thử mở một terminal mới và gõ' hash -r'. Bất kỳ ý tưởng tại sao? – FrancesKR

+0

Kiểm tra PATH của bạn, có thể có một số gcc khác (hoặc một liên kết tượng trưng) trước/opt/local/bin. Cũng có thể là một số bí danh hoặc hàm trong trình bao của bạn. Hãy thử 'type -a gcc' để xem bash nào dùng để tra cứu. – raimue

+0

Khi tôi thực hiện 'loại -a gcc', tôi nhận được hai dòng:" gcc là/usr/bin/gcc gcc là/opt/local/bin/gcc ". Khi tôi in PATH của tôi, tôi nhận được ".:/Opt/local/var/macports:/usr/local/bin:/sw/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/hallamsoft:/opt/local/bin:/usr/local/git/bin:/usr/texbin:/usr/X11/bin ". Xin lỗi, tôi không hoàn toàn chắc chắn một trong những điều này có nghĩa là gì, nhưng tôi đã đặt Macports đầu tiên trong con đường của tôi. – FrancesKR

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