2010-11-11 4 views
8

Tôi đang sử dụng phiên bản Ubuntu cuối cùng đi kèm với phiên bản gcc 4.4.5. Tôi cần biên dịch lại một chương trình không được viết bởi tôi và có thể chỉ được biên dịch với phiên bản cũ hơn của gcc như 4.0. Tôi đã quản lý để định cấu hình phiên bản cũ hơn này và sử dụng tiền tố trong quá trình cài đặt để phiên bản gcc cũ của tôi nằm trong /opt/gcc-4.0.1/bin. Tôi đã cố tạo liên kết tượng trưng bằng cách sử dụng ln -s /opt/gcc-4.0.1/bin/gcc gcc. Nhưng khi tôi gọi gcc -v tôi vẫn nhận được kết quả gcc version 4.4.5. Để biên dịch chương trình của tôi với một tệp makefile, nếu tôi thực hiện make, chương trình vẫn đang sử dụng phiên bản gcc mới. Làm thế nào tôi có thể yêu cầu make sử dụng phiên bản cũ?Cách sử dụng 2 phiên bản GCC khác nhau trên Linux Ubuntu và buộc MAKE sử dụng một trong số chúng

Trả lời

18

Hãy sử dụng một số biến chuẩn để xác định công cụ nào cần sử dụng, biến C-compiler được gọi là "CC". Bạn có thể đặt biến CC, hoặc trực tiếp trong Makefile

CC=/opt/gcc-4.0.1/bin/gcc 

của bạn là tốt nếu bạn đang làm việc một mình hoặc mọi người có cùng thiết lập. Hoặc bạn có thể vượt qua nó trên dòng lệnh như sau:

make CC=/opt/gcc-4.0.1/bin/gcc 

tùy chọn thứ ba được đặt /opt/gcc-4.0.1/bin trước khi mọi thứ khác trong đường dẫn của bạn (đó là lý do tại sao nó không hoạt động cho bạn, thư mục hiện không có trong con đường, vì vậy các liên kết tượng trưng bạn đặt ở đó sẽ không được xem xét khi tìm kiếm)

export PATH=/opt/gcc-4.0.1/bin:$PATH 

để hoàn chỉnh, trong dung dịch liên kết tượng trưng của bạn, bạn phải gọi ./gcc để có được Ví dụ gcc đúng, nhưng IMHO này có lẽ không phải là giải pháp tốt nhất.

HTH

+1

Nếu gói OP đang biên dịch sử dụng tập lệnh 'configure', thì đặt' CC' làm biến hệ vỏ được xuất trước khi chạy 'configure' nên đặt nó trong' Makefile' được tạo. – caf

+1

làm cho CC =/opt/gcc-4.0.1/bin/gcc hoạt động hoàn hảo và là giải pháp dễ dàng hơn! Cảm ơn – blackLabrador