NASM + C混合程序在32位机器上编译为64位

时间:2015-01-12 14:35:10

标签: x86 64-bit 32bit-64bit nasm 32-bit

我正在研究32位机器。我开发了混合x86 nasm程序集和C的混合程序(也使用OPENGL库)。我在文件“main.c”中有C代码,在文件“asm.s”中有汇编代码。 我开发了两个版本的汇编代码,一个用于32位平台,一个用于64位平台。我使用以下makefile来编译我的32位项目:

CC=gcc
ASMBIN=nasm

all : asm cc link
asm : 
    $(ASMBIN) -o asm.o -f elf32 -l asm.lst asm.s
cc :
    $(CC) -m32 -c main.c -o main.o
link :
    $(CC) -m32 -o output -lstdc++ main.o asm.o -lglut -lGLU -lGL

一切都很好。编译我的64位版本时遇到问题。 我一步一步地尝试了命令:

nasm -o asm.o -f elf64 -l asm.lst asm.s

编译精细并生成的asm.o文件。下一个:

gcc -m64 -c main.c -o main.o

其中还编译了精细并生成的main.o文件。最后:

gcc -m64 -o output main.o asm.o -lglut -lGLU -lGL

失败并给我结果如下:

/usr/bin/ld: cannot find -lglut
/usr/bin/ld: cannot find -lGLU
/usr/bin/ld: cannot find -lGL
collect2: error: ld returned 1 exit status

我做错了什么以及如何为64位编译它?

0 个答案:

没有答案