2014-11-17 2 views
0

모두어셈블리 파일을 Mingw와 연결

현재 MingGw로 사용되는 컴파일러를 변경하는 중입니다. 이 시점에서 모든 파일을 MinGw 컴파일하지만 가지고있는 어셈블리 파일을 연결할 수 없습니다. 내가 확인한 및 어셈블리 파일을 개체 파일로 컴파일 된. 또한 "-verbose"옵션을 사용하여 해당 오브젝트 파일이 링크 프로세스에 포함되어 있는지 확인했습니다. 그러나 내가 얻는 것은 "....에 대한 정의되지 않은 참조"에 대한 오류 메시지입니다.

어셈블리 파일을 올바르게 링크하려면 무엇을 놓치고 있는지 잘 모르겠습니다. 어떤 도움을 주시면 감사하겠습니다!

답변

1

asm 파일의 심볼 이름은 _ (밑줄)로 시작합니까? 예를 들어는 MinGW-W64에서 GCC 4.9.2로 컴파일 예를 들어 다음과 같은 32 비트 XP에서 예상대로 작동합니다

----- 파일 asmtest.c -----

#include <stdio.h> 

extern int add(int x, int y); 

int main(int argc, char *argv[]) 
{ 
    printf("The result is: %d\n", add(3, 5)); 

    return 0; 
} 

----- 파일 asmadd.S -----

.section .text 

.global _add 

_add: 
    movl 4(%esp), %eax 
    movl 8(%esp), %ebx 
    addl %ebx, %eax 
    ret 

----- 컴파일 명령 -----

gcc -Wall -o asmtest asmtest.c asmadd.S 
+0

대단히 감사합니다! 문서에서이 요구 사항에 대해 이야기하는 곳이 어디인지는 잘 모르겠지만 이것이 트릭을 만들었습니다. – barrem23

관련 문제