我有一个非常专业的文件,用 x86-64 程序集为 Linux 编写,在 GCC 下编译。我需要将该代码移到 Visual Studio 项目中,并且 mll64.exe 希望程序集文件采用 Intel 格式。
我试图构建一个跨平台的 DLL,但它不起作用:
15:47:19 cpudiag2 > gcc -shared -o my.dll my.o
/usr/bin/ld: my.o: 重定位 R_X86_64_32S 反对 `a local symbol' 在制作共享对象时不能使用;使用 -fPIC my.o 重新编译:无法读取符号:错误值 collect2:ld 返回 1 退出状态
15:47:19 cpudiag2 > gcc -fPIC my.S
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/crt1.o:在函数`_start'中:(.text+0x20):未定义的引用to `main' collect2: ld 返回 1 退出状态
因此,我尝试让 GCC 从目标文件反编译为 Intel 语法,但这也不起作用。以下两个命令都会产生 AT&T 语法中的反编译汇编代码。为什么?
objdump -d -M=intel my.o
gcc -S -masm=intel my.o