gcc 컴파일시 심볼에 이상한 문자가 붙는거 어떻게 없애나요!!!
글쓴이: kws4679 / 작성시간: 금, 2011/02/18 - 10:21오후
와 이거 하나때문에 오늘 하루를 그냥 날려먹네요
현재 어셈블리어를 nasm 으로 컴파일하고 c 를 gcc 로 컴파일해서
링크하려고 했는데요 고생 진탕 하다가 nm 으로 둘다 오브젝트 파일 살펴보니까
심볼이 다른걸 확인해서 일단 원인은 찾았는데요
문제는 nasm 으로 컴파일한 오브젝트 코드에서 심볼은 예를들어 _test 면 그대로 나타나는데
gcc 로 컴파일한 c 파일의 오브젝트 코드에서 심볼은 _Ztestv 이런식으로 문자가 추가되는데요
이런경우 어떻게 수정해야 하나요?
정리하자면
nasm -f coff testasm.asm
gcc -c testcpp.cpp
gcc -o test.o testasm.o testcpp.o
testasm.asm 은 대략
global _test
section .txt
_test:
~~~~~
testcpp.cpp 는 대략
extern void test(void);
int main(void)
{
test();
}
이런식입니다!!!!
참 추가적으로 현재 하고있는 작업이 위에서 설명드렸다시피
nasm 으로 오브젝트파일 만들고 gcc 로 오브젝트 파일 만들고 다시 gcc 링커로 이 둘 연결해서
오브젝트 파일로 만든다음에 이것을 기본 os 이미지에 넣어서 부팅시키려고 하거든요 그런데
그냥 오브젝트 파일을 이미지에 추가시켜도 되나요? 아니면 바이너리 파일로 변환해야 하나요? 그리고 만일
변환해야한다면 이런 툴같은게 있는건가요...?
Forums:
c++은 오버로딩이나 클래스 매서드들 때문에 맹글링이
c++은 오버로딩이나 클래스 매서드들 때문에 맹글링이 필요해요. c++로 하려는 이유가 있나요?
http://en.wikipedia.org/wiki/Name_mangling
댓글 달기