2015-01-06 19 views
7

Tôi đã cố gắng sử dụng hệ điều hành Mac OSX Yosemite để sử dụng gcc thay vì tiếng kêu khi cc được gọi, nhưng bất kể tôi làm gì, nó cũng không chịu chơi. Tôi đã thử thay đổi bash_profile/bashrc của tôi và thậm chí relinking liên kết tượng trưng, ​​nhưng vô ích - mỗi khi tôi gọi "cc" nó vẫn là clang chạy. Tôi đang cố gắng để buộc nó để được gcc thay vì (và không có, chỉ cần gọi gcc không phải là một lựa chọn).Đặt cc thành gcc thay vì vuốt trên OSX Yosemite

Tôi đã hỏi một câu hỏi tương tự trước đây (Make gcc default c compiler on Yosemite/disable clang).

+1

Tôi luôn quan tâm khi mọi người nói rằng họ muốn sử dụng gcc trên tiếng kêu vang - bạn có lý do ý thức hệ hay một số mục tiêu khác trong đầu không? –

+1

Không, tôi chỉ cần chạy một phần mềm rất phức tạp giả định gcc nhưng không thể chạy bằng tiếng kêu. – Hendrik

+3

Trong XCode 6, 'gcc' là một liên kết đến' clang', không phải là 'gcc' chính hãng. Bạn sẽ phải xây dựng GCC tùy chỉnh ở một số hình dạng hoặc hình thức, và sau đó thay đổi các liên kết (và có nguy cơ thay đổi chúng nếu bạn nâng cấp XCode và cài đặt lại các công cụ dòng lệnh). –

Trả lời

6

Bạn không nên làm điều này. Rất nhiều công cụ dựa vào các tệp nhị phân cài đặt để trỏ đến những gì chúng cần. Một tùy chọn khác là đặt biến môi trường CC thành gcc và gọi biên dịch với $CC ... thay vì cc ...; biến môi trường này cũng sẽ được chọn khi xây dựng các gói thông qua configure (autotools) hoặc cmake.

Đây cũng là một cách tiếp cận tương thích với các phiên bản MacPorts của gcc (như nhiều hơn nữa đến ngày gcc-4.9.2), có thể được thiết lập với: sudo port select --set gcc mp-gcc49

+0

Tôi đã thử đặt các biến môi trường và nó không hoạt động. Đây cũng không phải là trường hợp tôi gọi cc hoặc gcc theo cách thủ công, hoặc có bất kỳ sự kiểm soát thực nào được gọi, vì vậy thay vào đó là lý do tại sao tôi cố gắng lấy cc để chỉ chạy gcc. – Hendrik

+0

@Hendrik - Tôi cho rằng bạn có thể thử thiết lập bí danh, ví dụ: 'bí danh cc =" gcc "' (bash) hoặc 'bí danh cc 'gcc'' ([t] csh). Nhưng đây cũng là [vấn đề] (http://unix.stackexchange.com/questions/1496/why-doesnt-my-bash-script-recognize-aliases). –

+0

Phần mềm có ít nhất tôn trọng 'PATH' không? Bạn có thể thử cung cấp cho nó một môi trường chỉ biết về gcc (và không clang) – sapi

9

Cả OS X cũng không Xcode đi kèm với thực GCC. Đối với khả năng tương thích với các kịch bản mà giả sử trình biên dịch được gọi là "gcc", nó có thực thi theo tên đó, nhưng chúng là tất cả các mặt trận cho Clang. Không có số lượng liên kết tượng trưng, ​​thiết lập biến môi trường, hoặc thiết lập bí danh sẽ cho phép những thực thi đó chạy GCC thực.

Nếu bạn muốn GCC, bạn cần phải cài đặt nó. Bạn có thể làm điều đó bằng cách sử dụng một trong các trình quản lý gói, chẳng hạn như MacPorts (cái mà tôi quen thuộc). Tôi chắc rằng bạn cũng có thể sử dụng Homebrew.

Bạn không được sửa đổi bất kỳ thứ gì trong/usr/bin. Nếu bạn đã làm như vậy, bạn nên khôi phục những gì bạn đã thay đổi, nếu có thể.

Trình quản lý gói được xử lý tốt cũng sẽ không sửa đổi thư mục đó. Họ nên cài đặt vào một thư mục riêng biệt như/opt/local/bin,/usr/local/bin hoặc tương tự. Trong trường hợp đó, bạn sẽ muốn sửa đổi PATH để đặt các thư mục đó sớm hơn/usr/bin.

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