求解gcc编译链接汇编和c++代码找不到引用的问题
汇编代码文件如下:
section .bss section .data section .text global _gettsc _gettsc: rdtsc rol rdx,32 or rdx,rax mov rax,rdx retC/C++代码文件如下:
#include <stdio.h> extern unsigned long _gettsc(); int main() { unsigned long count = _gettsc(); return 0; }如果c++代码文件命名为.cpp则按照C++去编译链接会报错:
nasm -f elf64 -F stabs -Ox standerd.asm -o standerd.asm.o make: Circular standerd.asm <- standerd.asm.o dependency dropped. g++ -lpthread -I./ -masm=intel -O3 main.cxx.o standerd.asm.o -o test main.cxx.o: In function `main': main.cpp:(.text.startup+0x5): undefined reference to `_gettsc()' collect2: error: ld returned 1 exit status make: *** [all] Error 1 makefile:19: recipe for target 'all' failed如果C/C++代码文件改名为.c按照c语言去编译链接则不会报错
请问有什么解决办法吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
只能用C++ 问题解决了
不要用c++
c++有函数名修改机制
CPP编译时编译器会修改函数名(为了实现重载),你看看是找不到那个函数定义,用着无法找到的名字替换汇编的_gettsc试试