gcc 컴파일 후 파일 이름?

aksen123의 이미지

현재 버전이 다른 동일한 프로그램을 사용하고 있습니다.

통신 관련은 아니고, 그냥 시뮬레이터입니다. 하지만 다양한 버전에서 시뮬레이션하고 싶어서 서로 다른 버전을 디렉터리 별로 나눠 사용합니다.

문제는 gcc 컴파일러인데, 오래된 시뮬레이터는 gcc 3.x 에서만 make가 가능하고, 새 버전의 시뮬레이터는 gcc 4.x 에서만 make가 가능합니다.
결국 gcc 컴파일러를 4.x 으로 또 설치하고 있습니다. 물론 기존의 gcc 3.x는 /usr/bin 에 그대로 두고, 새 gcc 4.x 는 configure 할 때 --prefix로 다른 디렉터리를 지정하였습니다.

그런데 해결하나 싶었더니, 똑같은 gcc 라는 이름으로 존재하니까 가끔 헷갈립니다.
혹시 기존 gcc 3.x는 /usr/bin/gcc 로 그대로 두고, 새 gcc 4.x는 제가 make 하면서 /제가_정한_경로/gcc4 라는 이름으로 컴파일할 수 있는지 궁금합니다.
(이러면 시뮬레이터의 Makefile 에서 CC를 gcc4로 수정해서 사용하면 될 것 같아서요.)

이럴 경우에는, 어디서 (configure? Makefile? 그 외?) 어떻게 (옵션?) 지정해야 하는지 알고 싶습니다.
아니면 그냥 gcc 4.x 의 gcc 파일을 mv 로 이름을 변경해서 사용할까요???;;;

goforit의 이미지

> 혹시 기존 gcc 3.x는 /usr/bin/gcc 로 그대로 두고, 새 gcc 4.x는 제가 make 하면서 /제가_정한_경로/gcc4 라는 이름으로 컴파일할 수 > 있는지 궁금합니다.

할수 있는데, 주의 사항이 필요할 것 같습니다. 제가 예전에 컴파일러를 소스로 부터 빌딩할 때 배운 것이 하나 있는데,
다음 세 가지가 닭과 댤갈의 관계로 엮여 있다는 것입니다.

1. standard libraries such as libc
2. compiler
3. kernel system libraries (header files of system calls )

즉 컴파러를 다시 빌딩할 경우 사용하는 system library을 path나 사용 가능 버전을 주의 깊게 살펴야합니다.

> 이럴 경우에는, 어디서 (configure? Makefile? 그 외?) 어떻게 (옵션?) 지정해야 하는지 알고 싶습니다.

먼저 패키지 안에 autoconf,autoreconf 확인하세요.

순서
1. autoconf
standard library path 확인, 버전 확인....
2. makefile.am

3. configure --help

aksen123의 이미지

주의해야 할 부분이라고 알려주신,
1. standard libraries such as libc
2. compiler
3. kernel system libraries (header files of system calls )
을 왜 살펴봐야 하는지를 잘 모르겠습니다; 기존의 gcc 는 그대로 두는데도 불구하고요.
일단 path를 잘 설정해야 하는 이유를 이해했습니다.

그리고
1. autoconf
2. makefile.am
3. configure --help
중에서, configure --help 로 확인해보니까, --program-transform-name 라는 파라미터를 찾았습니다. 이것이 제가 원하는 파라미터인거 같은데, 다시 make 하니 컴파일 에러가 나는군요ㅠ

일단 잘 해결되면 다시 댓글 달겠습니다. 조언해 주셔서 감사합니다. ^^

pchero의 이미지

GCC 버전은...

Makefile 내에서 아래와 같은 식으로 지정해주시면 됩니다.
Macefile 에서의 CC 는 컴파일러를 지정하는 지시어입니다. 별로도 지정하지 않으면 자동으로 검색해서 사용하는데, 아래와 같이 지정하면 특정 버전의 GCC 를 컴파일러로 사용할 수 있습니다.

#CC=/usr/bin/gcc3.x
CC=/usr/local/bin/gcc-4.x/gcc

마찬가지로 libc 역시 설치된 디렉토리가 있을겁니다. 이 역시 Makefile 내에 LIBS 지시어로 지정하여 사용하시면 됩니다.
LIBS=-L/usr/local/lib/

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

시뮬레이터 빌드시 autoconf 를 사용하시는 것 같네요. 이 경우, ./configure 를 하시면 gcc 경로와 library 경로 지정이 가능합니다.
미리 CC, LIBS 환경변수에 값을 입력하시고 ./configure 를 하시면 될 것 같습니다.

Some influential environment variables:
CC C compiler command
CFLAGS C compiler flags
LDFLAGS linker flags, e.g. -L if you have libraries in a
nonstandard directory
LIBS libraries to pass to the linker, e.g. -l
CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if
you have headers in a nonstandard directory
CPP C preprocessor
CXX C++ compiler command
CXXFLAGS C++ compiler flags
CXXCPP C++ preprocessor

Use these variables to override the choices made by `configure' or to help
it to find libraries and programs with nonstandard names/locations.

---------------------------------
제일 왼쪽이 저입니다 :)

aksen123의 이미지

알려주신대로, path 설정하는 것보다는 configure에서 CXX, CPP 만 절대경로로 지정해주면 깔끔하겠군요.

조언해 주셔서 감사합니다. ^^

bushi의 이미지

Fedora 라면 compat-gcc-34 패키지를 추가 설치해서 사용할 수 있습니다.

댓글 달기

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