gpt4 book ai didi

c - 如何链接ELF32汇编和C文件?

转载 作者:行者123 更新时间:2023-12-02 08:54:58 25 4
gpt4 key购买 nike

我用 C 语言编写了一个简单的汇编软件 (nasm) 和一个简单的应用程序。我的 C 代码从汇编代码调用函数,但我不知道如何编译 C 代码而不收到来自“extern int Sum();”的“ undefined reference ”错误线。

C 代码:

#include <stdio.h>

extern int Sum();

main()
{
int a1, a2, x;

x = Sum(a1, a2);
printf("value of x is: %d\n", x);
}

汇编代码:

global _Sum

_Sum:
push ebp
mov ebp, esp

mov eax, [ebp+8]
mov ecx, [ebp+12]
add eax, ecx
pop ebp
ret

我如何分别编译这两个文件,然后将它们链接到一个统一的文件中?

最佳答案

您应该汇编 .asm 文件以获得 .o (对象)文件,正如您所说的那样。然后您应该编译(但不链接).c 文件以获取另一个 .o 文件,如下所示:

gcc -o whatever.o -c whatever.c

然后你应该将它们链接在一起,如下所示:

gcc whatever.o asm.o

然后链接器将立即使用所有目标代码运行,并且应该能够解析它所需的引用。

关于c - 如何链接ELF32汇编和C文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5612492/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com