2010-11-11 10 views
8

Używam ostatniej wersji Ubuntu, która pochodzi z wersji gcc 4.4.5. Muszę przekompilować program, który nie został napisany przeze mnie i który może być skompilowany tylko ze starszą wersją gcc, taką jak 4.0. Udało mi się skonfigurować starszą wersję i użyłem przedrostka podczas procesu instalacji, aby moja stara wersja gcc znajdowała się w /opt/gcc-4.0.1/bin. Próbowałem utworzyć dowiązanie symboliczne za pomocą ln -s /opt/gcc-4.0.1/bin/gcc gcc. Ale kiedy wywołuję gcc -v nadal otrzymuję wynik gcc version 4.4.5. Aby skompilować mój program, który jest już dostępny w pliku makefile, jeśli wykonam make, nadal będzie on korzystał z nowej wersji gcc. Jak mogę powiedzieć, aby make użyć starej wersji?Jak korzystać z 2 różnych wersji GCC na Linux Ubuntu i zmusić MAKE do korzystania z jednego z nich

Odpowiedz

18

Make używa niektórych standardowych zmiennych w celu określenia narzędzi do użycia, zmienna kompilatora C nazywa się "CC". Można ustawić zmienną cc, albo bezpośrednio w Makefile

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

który jest w porządku, jeśli pracujesz sam na to, czy każdy ma taką samą konfigurację. Czy można przekazać je w wierszu poleceń tak:

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

trzecia opcja jest ustawiona /opt/gcc-4.0.1/bin przed wszystkim innym w swojej drodze (co jest dlaczego to nie działa Ci, bieżący katalog nie jest w ścieżce, więc dowiązanie można umieścić nie będą brane pod uwagę przy wyszukiwaniu)

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

dla kompletności, w roztworze dowiązań symbolicznych, trzeba by powołać ./gcc aby uzyskać prawidłowa instancja gcc, ale IMHO to prawdopodobnie nie jest najlepsze rozwiązanie.

HTH

+1

Jeśli pakiet OP jest kompilacji używa 'configure' skryptu, a następnie ustawienie' CC' jako zmiennej powłoki eksportowanego przed uruchomieniem 'configure' należy ustawić go w wygenerowanym' Makefile'. – caf

+1

make CC =/opt/gcc-4.0.1/bin/gcc działa doskonale i jest łatwiejszym rozwiązaniem! Dzięki – blackLabrador

Powiązane problemy