0

我遇到的问题是链接器从内联汇编代码生成未定义的引用错误。

int global_var = 0;
void myfunc()
{
    asm(".intel_syntax noprefix\n");
    asm("lea eax, global_var\n");
}

我正在使用 GCC 3.4.2 使用 -masm=intel 进行编译,没有任何优化或任何东西。如果有人也遇到这种不便,请提供帮助。

4

1 回答 1

1

基本上,这是名称修改的问题- 也就是说,编译器在编译阶段修改(更改)变量和函数的名称。在这种情况下,“global_var”被更改为“_global_var”

如果您更改函数的第二行以使其访问“_global_var”,那么它编译得很好。(测试 GCC 4.7.1)

于 2013-02-03T19:55:24.713 回答