리눅스/서버관리

여러개의 gcc version 설치하기

Songker 2012. 2. 2. 16:56
여러가지 version의 gcc가 필요 할 때가 있다.

gcc를 설치하는데, 이때 설치하는 폴더만 변경해주면 된다. 

/usr/local/bin/gcc 에 기본적으로 설치가 되던가??
이곳에 말고 다른곳에 깔면 그만이다. 그리고 compile할때는 지정하고 싶은 gcc를 지정하면된다.

여튼간에 gcc설치하는 순서가

#> gcc_source/configure --prefix=/target_directory
     make && make install

하면 끝이다.

이때 (gcc_source 에서 ./configure를 하지 않도록 하자 )


나같은 경우 linux 서버의 gcc가 구버젼이고, 나는 신버젼이 필요하였다.
그러나 함께쓰는 cluster에서는 마음대로 gcc를 바꿀수는 없는노릇...( 다른 user에게 큰 피해를 끼칠수있으므로..)
나만의 gcc를 설치하고 사용하여야했다.

gcc new version을 설치후에
환경변수 PATH에  새로운 gcc/bin 을 가리도록 제일먼저 추가해주면된다.
그럼 gcc를 call 할때 PATH의 앞부분부터 참조하므로 새로운 gcc를 가지고 compile을 하게 될 것이다...




GCC 공식홈에서 추천하는 방법 : 

How to install multiple versions of GCC

It may be desirable to install multiple versions of the compiler on the same system. This can be done by using different prefix paths at configure time and a few symlinks.

Basically, configure the two compilers with different --prefix options, then build and install each compiler. Assume you want "gcc" to be the latest compiler and available in /usr/local/bin; also assume that you want "gcc2" to be the older gcc2 compiler and also available in /usr/local/bin.

The easiest way to do this is to configure the new GCC with --prefix=/usr/local/gcc and the older gcc2 with --prefix=/usr/local/gcc2. Build and install both compilers. Then make a symlink from /usr/local/bin/gcc to /usr/local/gcc/bin/gcc and from/usr/local/bin/gcc2 to /usr/local/gcc2/bin/gcc. Create similar links for the "g++", "c++" and "g77" compiler drivers.

An alternative to using symlinks is to configure with a --program-transform-name option. This option specifies a sed command to process installed program names with. Using it you can, for instance, have all the new GCC programs installed as "new-gcc" and the like. You will still have to specify different --prefix options for new GCC and old GCC, because it is only the executable program names that are transformed. The difference is that you (as administrator) do not have to set up symlinks, but must specify additional directories in your (as a user) PATH. A complication with --program-transform-name is that the sed command invariably contains characters significant to the shell, and these have to be escaped correctly, also it is not possible to use "^" or "$" in the command. Here is the option to prefix "new-" to the new GCC installed programs:

--program-transform-name='s,\\\\(.*\\\\),new-\\\\1,'

With the above --prefix option, that will install the new GCC programs into /usr/local/gcc/bin with names prefixed by "new-". You can use --program-transform-name if you have multiple versions of GCC, and wish to be sure about which version you are invoking.

If you use --prefix, GCC may have difficulty locating a GNU assembler or linker on your system, GCC can not find GNU as/GNU ld explains how to deal with this.

Another option that may be easier is to use the --program-prefix= or --program-suffix= options to configure. So if you're installing GCC 2.95.2 and don't want to disturb the current version of GCC in /usr/local/bin/, you could do

configure --program-suffix=-2.95.2 <other configure options>

This should result in GCC being installed as /usr/local/bin/gcc-2.95.2 instead of /usr/local/bin/gcc.



 출처 :  http://gcc.gnu.org/faq.html#multiple