[완료] 리눅스를 처음 사용하는 사람, gcc 질문!!

hobeom2의 이미지

안녕하세요~ 리눅스를 처음 사용하는 사용자입니다.

일을 하면서 어쩌다가 리눅스를 사용하게 되었는데, 이게 좀 이상하네요.

지금 사용하는 OS는 CentOS 5.6 입니다. (옛날 시스템(?)이에요.. 요즘 7.0도 나오는 시대에.)
컴파일을 하는데 문제가 있었는데 알고보니 gcc 버전이 4.1.2 였던 것입니다. 하... 그래서 설명이 잘 된 블로그의 글을 보고 4.8.2를 설치했지요.

그런데 문제는.... 이게 자꾸 버전이 옛날 버전으로 돌아간다는 것입니다. (ㄷㄷㄷ)
컴파일하다 문제가 생기면 버전을 확인해보고... 또 다시 scl enable 해서 버전을 올립니다.
이게 문제가 있는거 같은데, 어떻게 해결해야하는지 좀 알려주세요. 부탁드립니다.

(설명이 잘 된 블로그 글은
http://ihomyung.me/centos%EC%97%90%EC%84%9C-gcc-%EC%97%85%EA%B7%B8%EB%A0%88%EC%9D%B4%EB%93%9C%ED%95%98%EA%B8%B0/
여기 입니다. 여기의 내용을 그대로 따라했어요.

root 계정으로 설치를 다 하고 scl enable 을 하고나서, /etc 의 권한을 바꿨걸랑요.. (본래는 쓰기권한이 없더라구요. 그래서 쓰기 권한을 chmod로 줬다가 설치가 끝난 후 다시 돌려놨어요. 쓰기권한이 없는 것으로) 이게 문제가 될려나요???)

아래는 버전 확인 내용입니다. 버전이 낮게 나와서 높이는 과정입니다.
--------------------------------------------------------------------------------------
[hobeom2@node00 ~]$ gcc --version
gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-50)
Copyright (C) 2006 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.

[hobeom2@node00 ~]$ scl enable devtoolset-2 bash
[hobeom2@node00 ~]$ gcc --version
gcc (GCC) 4.8.2 20140120 (Red Hat 4.8.2-15)
Copyright (C) 2013 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.

[hobeom2@node00 ~]$
---------------------------------------------------------------------------------------

klara의 이미지

> root 계정으로 설치를 다 하고 scl enable 을 하고나서, /etc 의 권한을 바꿨걸랑요.. (본래는 쓰기권한이 없더라구요. 그래서 쓰기 권한을 chmod로 줬다가 설치가 끝난 후 다시 돌려놨어요. 쓰기권한이 없는 것으로) 이게 문제가 될려나요???)

원상 복구 시킨거라면 전혀 상관없고, 쓰기권한 가진채로 냅두면 나중에 맘대로 쓰면안되는걸 써버릴수도 있다는 위험(+보안 위험)이 있다는 거지, 권한이 추가로 있다고 해서 즉시 문제가 생기지는 않습니다.
참고로 리눅스에서 권한이 없어서 안되는 작업은 권한을 바꾸는게 아니라 su나 sudo와 같은 명령어를 이용하여 임시로 루트 권한을 획득하여 작업하는 게 상식입니다.

전 CentOS도 안쓰고, scl도 한번도 써본적이 없으므로 틀린 대답일 수도 있지만, 간단하게 scl 매뉴얼을 읽어본 걸로봐서는 적으신 'scl enable devtoolset-2 bash'는 'devtoolset-2'로 지정되는 환경하에서 bash를 실행하는 명령어로 보입니다.

당연히 새로 실행한 bash에서만 유효하고, 그 bash가 끝나면(터미널을 닫거나 로그아웃하거나 하면) 원래 bash로 돌아갑니다.
애당초 scl은 영구히 바꾸기 위해서 쓰는 목적으로 만든게 아니라, 임시로 바꾸는걸 목적으로 한 명령어로 보입니다.
영구히 바꾸고 싶으시면 근본적으로 PATH 환경 변수에서 4.8.2 gcc의 경로가 앞으로 오게 프로필 파일(.bash_profile 또는 .bashrc)을 수정해야 합니다.

hobeom2의 이미지

아하!!! bash가 그런거였군요!!
개념이 없다보니 시스템에 큰 문제가 발생한 줄 알았네요. ㅎㅎㅎㅎ

그럼, PATH환경변수의 경로를 수정해야 하는거네요.
그것도 SUDO로 루트 권한을 획득해서 수정해야겠죠??

감사합니다.
찾아보겠습니다. ㅎㅎㅎ

hobeom2의 이미지

PATH를 수정하라고 하셔서 시도해봤습니다.

일단 which gcc 로 gcc가 있는 폴더를 찾아봤습니다.
scl enable 하기 전에는 /usr/bin/gcc 인데 scl enable 하고나선 /opt/rh/devtoolset-2/root/usr/bin/gcc 였습니다.

그래서 홈디렉토리의 .bashrc 파일을 수정해봤습니다.
대망의 .bashrc 파일은

-----------------------------------------------------------------------------------

# .bashrc

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
export PTOOLS=/usr/local/ptools
export PATH=/opt/intel/Compiler/11.0/081/bin/intel64:/opt/mpich/bin:/opt/rrdtool-1.4.5/bin:$PTOOLS:$PATH
export LD_LIBRARY_PATH=/opt/intel/Compiler/11.0/081/lib/intel64:/opt/mpich/lib:/opt/rrdtool-1.4.5/lib:$LD_LIBRARY_PATH
----------------------------------------------------------------------------------------------

요롷게 있어서 export PATH= ~~~~ 에다가 추가했어요. /opt/rh/devtoolset-2/root/usr/bin: 이 것을 $PTOOLS 앞에다가 넣었죠.

그런데;;;;

echo $PATH 하니깐 No such file or directory 라는 것이 추가되었네요??;;;; 이걸 어찌 해결해야할까요?

그냥 scl enable~~~ 로 쓰는게 속편하려나요??? ㅋㅋ

근데 문제는.... KDevelop 써서 개발을 진행하려하는데, 문제가 있지 않을까요??? 터미널에서 각각 scl enable ~~ 해서 devtoolset-2를 bash 하도록(표현이 이게 맞나 모르겠네요) 해야하는데, KDevelop에선 그게 적용이 되려는지 모르겠어요.....

klara의 이미지

터미널에서 env 입력하면 각 변수가 어떻게 설정되어있나 볼 수 있습니다. 한번 확인해보세요.

그리고 kdevelop을 안써서 모르겠지만 kdevelop이던 아니면 거기서 가져오는 프로젝트파일(qmake, cmake 등)에는 일반적으로 컴파일러를 직접 지정가능하기 때문에 문제가 된다면 직접 지정하면 됩니다.
그리고 PATH설정을 하면 scl을 실행할 필요가 없습니다. 그걸 안하려고 설정하는거니까요.
마지막으로 홈디렉토리에서는 파일을 생성하고 수정하는건 루트권한이 없어도 됩니다.

익명 사용자의 이미지

bashrc 에 alias gcc=/opt/rh/devtoolset-2/root/usr/bin/gcc 등록하여 사용하면 될 것 같습니다. KDevelop 을 써보지 않아서 잘 모르겠는데 아래 url 처럼 compiler 를 설정하는 곳에서 설정하면 될 것 같습니다. http://blog.dmaggot.org/2013/02/multiple-compilers-with-cmake-and-kdevelop/

hobeom2의 이미지

일단 이런 초보적인 실수에 대해서 정성을 다 한 답변을 해주셔서 진심으로 감사드립니다.

1. 일단 .bashrc에 경로를 추가한 뒤에도 No such file or directory 라고 나왔던 문제의 원인을 찾았습니다.
.bashrc 에 경로를 추가한 뒤 이 파일이 적용되어야 정상적으로 작동할텐데.... 적용된다는 것은 로그아웃을 하거나 터미널을 종료한 뒤 다시 이용할 경우일텐데 저는 그런 과정없이 그냥 확인을 해버렸네요.........
무지에 의한 실수였습니다.

아무튼, 지금은 경로가 잘 지정되어서 높은 버전이 적용되었네요. 감사드립니다.

제가쓰는 centOS 5.6 버전은 gcc 4.1.2가 지원되는 최신버전이어서 더 높은 버전은 SCL (software collection)으로 다른 폴더에 설치해두고 써야 합니다(라고 http://unix.stackexchange.com/questions/175851/how-to-permanently-enable-scl-centos-6-4 에서 읽었습니다.).
그런데 bash파일을 수정해서 잘 사용하고있습니다. 감사합니다.

2. 찾아보니까 KDevelop에서 프로젝트파일 설정하는 곳은 메뉴에서 Project -> Project Options -> Configure Options 에서 하는 것 같습니다.
저같은 경우엔 Fortran을 사용하기에 Fortran 탭엘 가서 Fortran compiler , Compiler command (F77), Compiler flags (FFLAGS) 를 설정해보았습니다.

휴.....
리눅스 힘드네요.... 이것 저것 할 것이 많네요.
근데 그래서 더 매력적인거 같습니다. ㅎㅎ

도와주셔서 감사합니다.

klara의 이미지

이 경우는 리눅스라서 힘들다기보다는 centOS 5.6이라 힘들다고 해야겠습니다.
동환경 테스트가 필요한 경우라면 어쩔수 없지만 (기본으로 gcc 4.8이상이 제공되는) 최신의 사용하기 편한 다른 배포판을 사용하면 됩니다.

참고로 스크립트안에서 export한 변수를 현재의 쉘에 적용하려면 . 또는 source 명령어를 사용하면됩니다.

source .bashrc
또는
. .bashrc

와 같은 방식입니다.

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.