gcc 컴파일 후 파일 이름?
글쓴이: aksen123 / 작성시간: 금, 2014/04/04 - 6:31오후
현재 버전이 다른 동일한 프로그램을 사용하고 있습니다.
통신 관련은 아니고, 그냥 시뮬레이터입니다. 하지만 다양한 버전에서 시뮬레이션하고 싶어서 서로 다른 버전을 디렉터리 별로 나눠 사용합니다.
문제는 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 로 이름을 변경해서 사용할까요???;;;
Forums:
의견
> 혹시 기존 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
아직 제가 리눅스가 많이 부족한가 봅니다.
주의해야 할 부분이라고 알려주신,
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 하니 컴파일 에러가 나는군요ㅠ
일단 잘 해결되면 다시 댓글 달겠습니다. 조언해 주셔서 감사합니다. ^^
GCC 버전은... Makefile 내에서 아래와
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.
---------------------------------
제일 왼쪽이 저입니다 :)
생각해보니 configure 에서...
알려주신대로, path 설정하는 것보다는 configure에서 CXX, CPP 만 절대경로로 지정해주면 깔끔하겠군요.
조언해 주셔서 감사합니다. ^^
Fedora 라면 compat-gcc-34 패키지를
Fedora 라면 compat-gcc-34 패키지를 추가 설치해서 사용할 수 있습니다.
댓글 달기