从gcc中的内联汇编引用全局变量

时间:2013-02-03 19:15:27

标签: c gcc assembly inline-assembly undefined-reference

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

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

我使用GCC 3.4.2编译-masm = intel并且没有优化或任何改进 如果有人也有这种不便,请协助。

1 个答案:

答案 0 :(得分:1)

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

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