한 머신에 여러 gcc 버전을 안전하게 사용하는 방법은?

dorado2의 이미지


현재 fedora core 4 (gcc 버전 4) 머신을 사용중입니다.

그런데 사정상 gcc 2.96 버전도 같이 사용해야할 것 같습니다.

어떤 계산 프로그램을 돌리는데, 일부 사용자는 2.96 버전 기반 환경에서 써야 하고,
다른 사람은 gcc 4 버전을 써야 합니다.

사용자 별로 안전하게 다른 gcc 버전을 사용하는 방법이 있을까요?
glibc 같은 라이브러리 도 문제가 되지 않을까요?

섣불리 설치하기가 어렵네요.

gcc 소스 받아서 설치한 후 /usr/local 쪽에 깔고 그 때 그때 PATH 설정해서 할 수 도 있겠지만,
다른 사용자 간에 불편이 없어야 해서요.

답변에 미리 감사드립니다.

codebank의 이미지

유저별로 가능한지는 모르겠습니다만...

gcc-config를 이용하시면 가능하다고 알고 있습니다.

배포판이 틀리지만 Gentoo에서는 다음과 같이 사용한다고 나와있네요.

http://usr.gentoo.or.kr/forum/read.php?table=tip&no=561&page=1&o[sc]=t&o[ss]=gcc&o[st]=a&o[at]=s&o[sct]=s&o[stt]=s

------------------------------
좋은 하루되세요.

------------------------------
좋은 하루 되세요.

prolinko의 이미지

페도라에도 backwards compatibility를 위해서 compat라는 이름으로 gcc나 glib등의 예전버전 패키지가 포함되어 있습니다. 그래서 최신 버전의 페도라를 깔아도 옛날 옛적 버전의 readhat linux에 맞춰나온 베더제공 소프트웨어들을 무리없이 쓸수 있습니다.

yum search gcc-compat 로 검색해 보시면 gcc2.9 버전, gcc3.3 대 버전의 gcc도 찾을 수 있을 거고요, yum search glibc-compat 정도로 검색 해보고 적당한 버전의 glic를 같이 깔면 됩니다. 컴파일을 위해서는 dev 패키지도 같이 깔아야 합니다.

그런다음 ls -l /usr/bin/gcc* 해보면 여러버전의 gcc가 깔려있는 것을 볼수 있을 겁니다.

보통 ./configure, make, make install 로 소프트웨어 설치시 configure에서 적당한 C 컴파일러를 찾습니다. 이때 보통 CC라는 환경 변수가 설정되어 있으면 해당 컴파일러를 사용하고 없는 경우 알아서 gcc를 디폴트로 찾아오게 됩니다.

그러므로 설치된 2.9대 버전의 컴파일러를 사용하고 싶은 경우
 CC=gcc29 ./configure <기타옵션....>
과 같이 사용하시면 됩니다. (자세한 컴파일러 이름은 직접 확인해 보세요 ^^)

C++의 경우 CXX=g++29 식으로 하면 됩니다.

semmal의 이미지

아예 링크를 다 바꿔버리기때문에 동시에 같이 쓸 수는 없습니다. 즉 한명 작업이 끝나면, 다른 사람이 써야하는 식으로 해야죠. 그렇게 하지말고, 각 홈디렉토리 내에 ~/bin 디렉토리를 만들고 gcc 관련 파일을 넣습니다. 그리고 .profile에서 path를 ~/bin을 우선순위높게 잡아주고요. lib와 include도 비슷하게 잡아줄 수 있을 듯하네요. 아니면 Makefile에서 설정할 수도 있을테구요.

------------------------------
How many legs does a dog have?

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.