开发者社区> 问答> 正文

求解gcc编译c内联汇编标号报错的一个问题?报错

使用gcc编译c语言内联汇编使用-O优化时,是标号部分报错,请问有知道怎么解决的吗?

unsigned long strcpy0(char* dst,const char* src)
{
	__asm__ __volatile__
		(
		 ".intel_syntax noprefix\n"
		 "POS2:\n"
		 "lodsb\n"
		 "stosb\n"
		 "test al,al\n"
		 "jnz POS2\n"
		 :
		 :
		 :"rax","rbx"
		 );
}
报错信息如下:

gcc -masm=intel -O3 -c -o test.o test.c

test.c: Assembler messages:

test.c:7: Error: symbol `POS2' is already defined

test.c:7: Error: symbol `POS2' is already defined

test.c:7: Error: symbol `POS2' is already defined

展开
收起
爱吃鱼的程序员 2020-06-09 10:50:54 654 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    这事帮不了了。刚才随手测了一下,我的gcc直接make是可以的。如果用你上面的命令-masm=intel参数无法识别。。哈。我的gcc-v的信息如下:

    Configuredwith:--prefix=/Library/Developer/CommandLineTools/usr--with-gxx-include-dir=/usr/include/c++/4.2.1

    AppleLLVMversion6.0(clang-600.0.57)(basedonLLVM3.5svn)

    Target:x86_64-apple-darwin13.1.0

    Threadmodel:posix


    好的,谢谢你,查找了好长时间没有找到解决办法

    引用来自“中山野鬼”的评论

    这事帮不了了。刚才随手测了一下,我的gcc直接make是可以的。如果用你上面的命令-masm=intel参数无法识别。。哈。我的gcc-v的信息如下:

    Configuredwith:--prefix=/Library/Developer/CommandLineTools/usr--with-gxx-include-dir=/usr/include/c++/4.2.1

    AppleLLVMversion6.0(clang-600.0.57)(basedonLLVM3.5svn)

    Target:x86_64-apple-darwin13.1.0

    Threadmodel:posix


    2020-06-09 10:51:10
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Decian GNU/Linux安全合规之路 立即下载
Debian GNU/Linux 安全合规之路 立即下载
低代码开发师(初级)实战教程 立即下载

相关镜像