gpt4 book ai didi

linux - g++: 错误:无法识别的命令行选项 ‘--32’ ;你是说 ‘-m32’ 吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:31:43 24 4
gpt4 key购买 nike

错误代码这是我的错误代码,它说 --32 是错误行请帮我解决错误

pravin@pravin-VirtualBox:~/Desktop/my os 2$ make loader.o
g++ --32 -o s@ loader.s
g++: error: unrecognized command line option ‘--32’; did you mean ‘-m32’?
Makefile:11: recipe for target 'loader.o' failed
make: *** [loader.o] Error 1

我已经尝试解决这个问题,但我不能,请尽快提供帮助

生成文件代码

GCCPARAMS = -m32 -Iinclude -fno-use-cxa-atexit -nostdlib -fno-builtin -fno-rtti -fno-exceptions -fno-leading-underscore -Wno-write-strings
ASPARAMS = --32
LDPARAMS = -melf_i386
objects = loader.o kernel.o
%.o: %.cpp
g++ $(GPPPARAMS) -o s@ -c $<
%.o: %.s
g++ $(ASPARAMS) -o s@ $<
mykernel.bin: linker.ld $(objects)
ld $(LDPARAMS) -T $< -o $@ $(objects)
install: mykernel.bin
sudo cp $< /boot/mykernel.bin

loader.s

.set MAGIC, 0x1badb002
.set FLAGS, (1<<0 | 1<<1)
.set CHECKSUM, -(MAGIC + FLAGS)
.section .multiboot
.long MAGIC
.long FLAGS
.long CHECKSUM
.section .text
.extern kernelMain
.extern callConstructors
.global loader
loader:
mov $kernel_stack, %esp
call callConstructors
push %eax
push %ebx
call kernelMain
_stop:
cli
hlt
jmp _stop
.section .bss
.space 2*1024*1024; # 2 MiB
kernel_stack:

如果有人知道如何解决这个问题。我想学习如何从头开始制作操作系统,但这个错误让我很不爽

最佳答案

ASPARAMS = --32
...

%.o: %.s
g++ $(ASPARAMS) -o s@ $<

This is my error code it says --32 is the error line ...

使用 -Wa,--32-Wa 将参数传递给汇编程序,类似于 -Wl 将参数传递给链接器的方式。使用编译器驱动汇编器和链接器时需要-Wa-Wl。也许是这样的:

CXX = g++
ASPARAMS = -Wa,--32
...

%.o: %.s
$(CXX) $(ASPARAMS) -o s@ $<

如果您直接调用汇编器和链接器,则不会使用-Wa-Wl。例如,您的 makefile 配方可能如下所示:

AS = as
ASPARAMS = --32
...

%.o: %.s
$(AS) $(ASPARAMS) -o s@ $<

ASPARAMSGPPPARAMS 有点不寻常。通常您使用 ASFLAGSCXXFLAGS。另见 Variables Used by Implicit Rules在制作手册和Variables for Specifying Commands在 GNU 编码标准中。

也许是这样的:

CXX = g++
AS = as
LD = ld

CPPFLAGS = -Iinclude
CXXFLAGS = -m32 -fno-use-cxa-atexit -nostdlib -fno-builtin -fno-rtti -fno-exceptions -fno-leading-underscore -Wno-write-strings
ASFLAGS = --32
LDFLAGS = -melf_i386

objects = loader.o kernel.o
%.o: %.cpp
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -o s@ -c $<

%.o: %.s
$(AS) $(ASFLAGS) -o s@ $<

mykernel.bin: linker.ld $(objects)
$(LD) $(LDFLAGS) -T $< -o $@ $(objects)

install: mykernel.bin
sudo cp $< /boot/mykernel.bin

关于linux - g++: 错误:无法识别的命令行选项 ‘--32’ ;你是说 ‘-m32’ 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57238581/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com