我正在研究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位编译它?