이런 컴파일 에러 보신분?
글쓴이: 낙엽 / 작성시간: 월, 2003/03/31 - 10:35오전
cc -c -g -pthread -D__DEBUG__ -D__DEBUGFILE__ ./dataproc.cxx cc -c -g -pthread -D__DEBUG__ -D__DEBUGFILE__ ./srvsock.cxx (null command) cc -c -g -pthread -D__DEBUG__ -D__DEBUGFILE__ ./util.cxx Linking.............................dataproc.o srvsock.o util.o ld: Object file format error in: server.cxx: read_cur_obj_info: bad file magic number(0x2a2f) *** Exit 1 Stop.
이런 에러를 경험하신분 계신가요?
특정 시스템에서만 이런 에러를 발생시키네요.
Forums:
so 파일 사용시에 라이브러리 함수 인자가 안맞는 것은 아닌지요
소스를 보지 못해서 걍 추측하기로는..
so 파일에 정의된 함수의 인자의 magic number에 이상한 데이터를 집어 넣는 것 같은데요..
혹시 so나 라이브러리나 그 OS에서 컴파일 하지 아니하고 가져다가 사용하신 것은 없는지요? 아니면 so에 정의된 함수명을 쓸때 인자가 다르지 않은지요?
가끔 so가 업그레이드 될때, 인자가 변하는 경우가 있습니다. so의 버젼도 확인해 보심이...
obj에 관련된 실행명령으로 그 so에 포함된 함수를 확인해 보시는 것도 방법이 되겠군요.
linker에 cxx file이 넘어간 것 같은데요....
linker에 cxx file이 넘어간 것 같은데요....
---
http://coolengineer.com
[quote="pynoos"]linker에 cxx file이 넘어간 것
linker에 cxx file이 넘어간다는게 무슨 말씀이신지?
간단하게 테스트 해봐도 이런 메시지가 뜨더라구요.
작업 서버중에 유일하게 Compaq 서버 안에서만 이런 메시지가 뜨네요..
in test.cc
다른곳(다른 Sun Solaris server)에서는 같은 소스를 컴파일 해도 이상이 없었습니다.
혹시나 해서 c file을 컴파일 해보니 c file에서는 에러가 안나네요.
------------------------- 이하 테스트 후 수정 질문 ---------------------------
test.c 파일을 -c옵션으로 object파일을 생성하니까 object 생성이 되는데
test.cc 파일을 -c옵션으로 object파일을 생성하려 하니까 object가 생성이 안됩니다. 어떤 에러도 없이요. 이런 현상 보셨나요?
[code:1]cout << "hi"; [/
cout << "hi";
$>g++ -o test test.cc로 하면 잘 되네요..$>cc -o test test.cc
/tmp/cctXaD2A.o: In function `main':
/tmp/cctXaD2A.o(.text+0xf): undefined reference to `cout'
/tmp/cctXaD2A.o(.text+0x14): undefined reference to `ostream::operator<<(char const *)'
collect2: ld returned 1 exit status
redhat에서는 이렇게 에러가 나네요.. 전 c++언어는 g++로 컴파일을 해서.. c만 cc나 gcc를 쓰죠.
답변 감사합니다.
보통은 cc로 c와 c++ 둘다 컴파일 가능했었는데, 이 시스템에서는 c만 컴파일 가능하네요.
근데 이상한게, c++ file을 컴파일할때, 어떤 에러메시지도 출력하지를 않네요.
정상적으로 컴파일 되는것처럼 프롬프트가 떨어지니.. 거참..
다른 서버에서 정상적으로 컴파일 되는게 유독 이 시스템에서만 안되니 종잡을 수가 없었네요.
답변해 주신 분들께 감사드립니다. 꾸벅
리눅스는 아닌것 같은데... 빌드할 때와 링크할 때 다른 툴체인을 쓰시는
리눅스는 아닌것 같은데... 빌드할 때와 링크할 때 다른 툴체인을 쓰시는 것 아닌가요? 가령 컴파일은 GNU cc로 하고 링크는 그 OS의 네이티브 ld로 하시거나 그 반대의 경우 그런 경우가 생길 수 있습니다. 특히 C와 달리 C++ 은 그런 문제에 민감한 편이라...
사용하시는 컴파일러 버전과 링커 버전을 확인해 보시면 좋겠습니다. 특히 PATH에서 걸리는 ld와 cc가 같은 회사의 것인지...
--
익스펙토 페트로눔
댓글 달기