GCC에서 ELF 파일 생성 어떻게 하죠?
글쓴이: 신태관 / 작성시간: 금, 2003/04/25 - 1:38오후
일반적으로 LINUX에서 GCC -O 옵션을 주고
컴파일 하면 elf 포맷으로 된 파일이 생성이
됩니다. 그런데 AIX, HP-UX, SOLARIS, Tru64
등에서 컴파일을 하면 다른 포맷으로 나옵니다.
어떻게 하면 ELF 파일 형식으로 나오게 하죠?
관련 인터넷 자료를 찾아보니깐,,,
a.out을 ELF 파일로 변환해서 컴파일 하는
방법이 있데요.
http://ww.telent.net/linux/ELF-HOWTO-1.html
이대로 AIX, HP-UX, SOLARIS, Tru64등에서
설정을 하고 컴파일 한다면 제가 원하는
ELF32로 오브젝트 파일 생성이 가능할까요?
또 다른 방법이 있나요?
AIX, HP-UX, SOLARIS, Tru64등에서 GCC에서
ELF32 혹은 ELF64의 파일 포맷으로
나오게 하고 싶습니다. 어떠한 방법이
있을까요?
꼭 답변 부탁 드립니다. :oops:
Forums:
각 OS에는 주로 사용하게 되는 실행파일 포맷이 있습니다. 리눅스가 EL
각 OS에는 주로 사용하게 되는 실행파일 포맷이 있습니다. 리눅스가 ELF라면 솔라리스에서는 또 다른 것이고, 서로 호환이 되지 않을 가능성이 매우 높습니다.
크로스 컴파일을 하는 경우가 아니라면 각 OS에서 원하는 방식으로 바이너리를 생성하도록 gcc/binutils가 맞추어져 있습니다. 억지로 ELF포맷으로 만들 수 있을지도 모르지만 그러면 그 OS에서는 실행이 안될 가능성이 거의 100%입니다.
굳이 그렇게 해야 하는 이유가 있나요?
--
익스펙토 페트로눔
cjh님 답변 감사합니다.네.. 다른 OS에서도 소스를 컴파일해서 O
cjh님 답변 감사합니다.
네.. 다른 OS에서도 소스를 컴파일해서 OBJECT파일을 ELF 포맷으로 만들어야 되거든요.
그럴려면 gcc/binutils 설정을 어떻게 해주면 돼죠?
제가 WINDIWS만 하다가 리눅스나 유닉스는 꽝이거든요.. :oops:
그래서 머가 뭔지 잘 모르겠어요..
어떠한 설정을 해줘야 하죠?
조금더 자세히 가르쳐 주실래요?
그럼... 감사합니다.
가령 AIX에서 gcc로 ELF포맷을 만들어서 AIX에서 실행할 것인가요
가령 AIX에서 gcc로 ELF포맷을 만들어서 AIX에서 실행할 것인가요? 아마 그렇게는 되지 않을 겁니다.
AIX에서 x86-linux용의 ELF포맷 실행파일을 만드는 일은 크로스 컴파일러를 빌드하면 가능하겠죠.
위의 두 경우중 어디에 해당하는지... 목적을 정확히 밝히는 것이 좋을것 같네요.
--
익스펙토 페트로눔
aix에서 elf object 파일을 활용하려고 하는데요. ELF 파일 생성
컴파일러로 컴파일해서 직접적으로 실행 파일을 활용하지않고요.
가령 GCC -o로 컴파일 하면 OBJECT 파일이 나오잖아요.
OBJECT 파일을 활용하려고 하거든요.
IBM aix 4.3.3 에서 ELF 포맷의 OBJECT 파일만 생성하면 되거든요...
아직까지는 TEST 중이기 때문에 aix에서 만든 ELF파일이 목적에 맞게
활용될지는 잘 모르겠지만... 우선적으로 해야 될일은 aix 에서 ELF로 된
object 파일을 만드는것입니다.
그럼... 답변 기다리겠습니다
감사합니다.
-o 옵션이 아닌 -c 옵션일겁니다.
-o 옵션은 실행파일을 생성하는 옵션이고 -c 옵션이 컴파일만해서 .o파일을
만들어내는 옵션입니다.
내용을 읽어보니 OBJ파일들을 작성해서 하나의 라이브러리로 묶으려고 하시나
보군요.
제가 알기로는 OBJ파일들의 묶음들도 내부적으로는 OS코드들이 적재되어
있습니다.
즉, 소스차원이 아니라면 타기종의 .s파일을 공유한다는것은 불가능한것으로
알고 있습니다.
(여기서 .s 파일은 UNIX기종에서 사용되는 라이브러리를 뜻합니다.)
위에서 cjh님도 말씀하셨지만 각 CPU에는 해당하는 실행포맷이 있고 그것에
맞춰야만 실행이 가능합니다. IBM aix 동작하는 프로그램이 아니고 다른 CPU
에서 동작하는 프로그램의 OBJ파일을 작성하신다면 -m옵션을 이용하면 됩니다.
그러면 gcc에서 해당하는 머신의 코드로 출력파일을 만들어냅니다.
(이것을 크로스 컴파일이라고 부른다고 합니다.)
------------------------------
좋은 하루 되세요.
댓글 달기