我正在尝试编译以下链接中提及的代码。我收到以下链接器错误:
/tmp/ccUVLIZ0.ltrans0.ltrans.o:在函数“ main”中:
:((。text.startup + 0x5):对“ one”的未定义引用
collect2:错误:ld返回1个退出状态
Equivalent for GCC's naked attribute
链接器没有看到程序集定义?
以下代码:
#include <stdio.h>
asm("_one: \n\
movl $1,%eax \n\
ret \n\
");
int one();
int main() {
printf("result: %d\n", one());
return 0;
}
答案 0 :(得分:1)
对于这些技巧,您需要明确提供功能说明
#include <stdio.h>
asm("one: \n\
movl $1,%eax \n\
ret \n\
");
extern "C" int one();
int main() {
printf("result: %d\n", one());
return 0;
}
您可能会在中找到有关外部“ C”的更多说明 What is the effect of extern "C" in C++?