gpt4 book ai didi

c - 使用 gcc 编译基本 x86 代码时出现链接错误

转载 作者:太空宇宙 更新时间:2023-11-04 06:36:54 24 4
gpt4 key购买 nike

我正在尝试编写非常基本的 x86 代码并在 C 程序中调用它。我正在运行 OSX 10.8.2。这是我的代码:

开始.c:

#include <stdio.h>

void _main(); // inform the compiler that Main is an external function

int main(int argc, char **argv) {
_main();
return 0;
}

代码.s

.text

.globl _main
_main:
ret

我运行以下命令来尝试编译:

gcc -c -o code.o code.s
gcc -c -o start.o start.c
gcc -o start start.o code.o

然后在最终命令后返回此输出:

Undefined symbols for architecture x86_64:
"__main", referenced from:
_main in start.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status

我是否在编译器调用中遗​​漏了什么?我需要更新一些东西/安装一些不同的东西吗?我只是无法在任何地方找到明确的答案,因为这是一个一般的输出。谢谢!

最佳答案

您的 asm _main 符号中需要一个额外的下划线:

.text

.globl __main
__main:
ret

C 符号在编译时得到一个下划线前缀,所以你的 C main 实际上是 _main 并且实际上需要定义一个 extern C _main as __main 如果你用 asm 写它。

关于c - 使用 gcc 编译基本 x86 代码时出现链接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13712858/

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