2013-10-28 5 views
0

Возможно ли иметь несколько версий gcc, установленных в системе unix? Если да, как определить, какие все версии установлены? Кроме того, можно ли указать во время выполнения, какую версию gcc использовать?Как указать версию gcc во время выполнения?

+2

Да. Поставьте полный путь к версии, которую вы хотите использовать! – devnull

+0

Спасибо за ответ. Как проверить, установлены ли в первую очередь несколько версий? – mindreader

+0

Вы можете использовать 'find'. – devnull

ответ

1

Вот шаг за шагом, который работает на Linux, и будет возможно работать над unix.

Сначала проверьте, у вас есть gcc доступны:

[email protected] ~ $ gcc 
gcc: fatal error: no input files 
compilation terminated. 

Yep. Не понравилось то, что я не поставлял ничего для компиляции.

Если у вас есть что-то вроде no command gcc found или command or file not recognised: gcc, возможно, у вас может возникнуть проблема.

Теперь, найти где что gcc является:

[email protected] ~ $ which gcc 
/usr/bin/gcc 

Великого. Это в /usr/bin/gcc, но это не говорит нам об альтернативных версиях.

Давайте выясним немного о том, что:

[email protected] ~ $ ls -l /usr/bin/gcc 
lrwxrwxrwx 1 root root 7 Mar 28 2013 /usr/bin/gcc -> gcc-4.7 

На моей машине (Linux Mint), что»показать это показывает символическую ссылку. Это означает, что когда я запускаю команду gcc, она работает /usr/bin/gcc-4.7

Ok. Я предполагаю, что это, как правило, в /usr/bin, поэтому, позволяет увидеть, если есть какие-либо другие:

[email protected] ~ $ ls -l /usr/bin/gcc* 
lrwxrwxrwx 1 root root  7 Mar 28 2013 /usr/bin/gcc -> gcc-4.7 
-rwxr-xr-x 1 root root 275952 Jul 3 2012 /usr/bin/gcc-4.5 
-rwxr-xr-x 1 root root 578808 Sep 22 2012 /usr/bin/gcc-4.7 
-rwxr-xr-x 1 root root 22832 Sep 22 2012 /usr/bin/gcc-ar-4.7 
-rwxr-xr-x 1 root root 22832 Sep 22 2012 /usr/bin/gcc-nm-4.7 
-rwxr-xr-x 1 root root 22832 Sep 22 2012 /usr/bin/gcc-ranlib-4.7 
-rwxr-xr-x 1 root root 220968 Oct 9 2012 /usr/bin/gccxml 
-rwxr-xr-x 1 root root 8606464 Oct 9 2012 /usr/bin/gccxml_cc1plus 

так получается, у меня есть GCC версии 4.7 и 4.5 на моей машине. Я не знаю, что другие.

Вы можете указать номер версии, отправив полный путь:

[email protected] ~ $ gcc --version 
gcc (Ubuntu/Linaro 4.7.2-2ubuntu1) 4.7.2 
Copyright (C) 2012 Free Software Foundation, Inc. 
This is free software; see the source for copying conditions. There is NO 
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 

[email protected] ~ $ /usr/bin/gcc-4.5 --version 
gcc-4.5 (Ubuntu/Linaro 4.5.4-1ubuntu2) 4.5.4 
Copyright (C) 2010 Free Software Foundation, Inc. 
This is free software; see the source for copying conditions. There is NO 
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 

[email protected] ~ $ /usr/bin/gcc-4.7 --version 
gcc-4.7 (Ubuntu/Linaro 4.7.2-2ubuntu1) 4.7.2 
Copyright (C) 2012 Free Software Foundation, Inc. 
This is free software; see the source for copying conditions. There is NO 
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 

Альтернативой, и я рекомендую вам DO NOT это сделать, это использовать find. (будьте осторожны: на общей машине это не обязательно хорошие манеры).

find/-name "gcc*" 

Это будет искать все файлы, начинающиеся с gcc на вашем компьютере. Он будет сканировать весь диск, поэтому потребуется некоторое время, и вы будете влиять на производительность для всех остальных пользователей на вашей системе (которые, как вы сказали, «unix» и «University Server» могут поставляться с воздействие).

0

Да, это довольно часто, чтобы иметь несколько версий GCC установлен, обычно называемый gcc-версия. Например, на моей машине у меня есть gcc-4.4, gcc-4.5 и gcc-4.6. Обычно вы можете видеть, какие версии вы установили, набрав gcc-tab - используя автозаполнение оболочки, чтобы сообщить вам, какие версии доступны.

+0

Спасибо @Chris. Он работал на моей локальной машине. Я на самом деле пытаюсь проверить это на своем университетском сервере, и кажется, что он был, возможно, отключен, потому что он там не работает. Не могли бы вы узнать еще один способ сделать это? – mindreader

Смежные вопросы