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

X86 32位机器上64位NASM+C混合程序编译,x86,64-bit,32bit-64bit,nasm,32-bit,X86,64 Bit,32bit 64bit,Nasm,32 Bit,我在32位机器上工作。我还使用OPENGL库开发了一个混合了x86 nasm汇编和C的混合程序。我在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

我在32位机器上工作。我还使用OPENGL库开发了一个混合了x86 nasm汇编和C的混合程序。我在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
它编译了fine并生成了asm.o文件。下一步:

gcc -m64 -c main.c -o main.o
它还编译了fine并生成了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位编译它?

你有64位版本的那些库吗?在ld可以找到它们的地方?/usr/lib/i386 linux gnu/libglut.a/usr/lib/i386 linux gnu/libglut.so/usr/lib/i386 linux gnu/libglut.so.3/usr/lib/i386 linux gnu/libglut.so.3.9.0,我只有这个,如何为64位安装它?