【发布时间】:2014-08-14 17:46:32
【问题描述】:
我有一个C 驱动程序文件,它声明了一个extern 函数,以便在我的asm 文件中使用它。我在 Windows 7 x64 机器上。
我使用以下命令将asm 文件与NASM 组装在一起:
nasm avxmain.asm -f win64 -o avxmain.o
然后我像这样编译C文件:
gcc avxdriver.c -c -m64 -o avxdriver.o
把这一切联系在一起,我跑了:
gcc avxdriver.o avxmain.o -o final
这是我得到的错误:
avxmain.o:G:\Desktop\CPSC240:(.text+0x50): 重定位截断为 适合:R_X86_64_32 对 `.bss'
avxmain.o:G:\Desktop\CPSC240:(.text+0xb9): 重定位截断为 适合:R_X86_64_32 对 `.data'
avxmain.o:G:\Desktop\CPSC240:(.text+0xc2): 重定位截断为 适合:R_X86_64_32 对 `.data'
avxmain.o:G:\Desktop\CPSC240:(.text+0x14e):重定位截断为 适合:R_X86_64_32 对 `.bss'
collect2:错误:ld 返回 1 退出 状态
avxdriver.c文件:
#include <stdio.h>
#include <stdint.h>
extern double avxdemo();
int main()
{
double return_code = -99.9;
printf("%s","This program will test for the presence of AVX (Advanced Vector Extensions) also known as state component number 2.\n");
return_code = avxdemo();
printf("%s %1.12lf\n","The value returned to the driver is ", return_code);
printf("%s","The driver program will next send a zero to the operating system. Enjoy your programming.\n");
return 0;
}
avxmain.asm文件:
因为教授提供的cmets,所以放在这里很长。
我已尝试运行 -fPIC 和 -mcmodel=medium 选项。我仍然遇到同样的错误。
我完全迷茫和困惑,因为这是我应该为我的班级运行的示例项目。这个主题对我来说是全新的。我花了大约半天的时间来搜索这些错误并尝试不同的东西。我只需要指出正确的方向。
【问题讨论】:
-
你在asm代码中试过
default rel吗? -
@harold 你能解释一下那是什么吗?我仍然是汇编编程的新手,但正在逐步学习它。
-
基本上相当于在任何地方使用
[rel label]使用使用[label]