在Docker中构建Osdev时出现链接器多重定义错误
问题:Docker环境下构建自制OS出现多重定义链接错误
- 环境背景:之前在amd64架构电脑上开发自制操作系统BoneOS,构建完全正常。现在换成M1 Mac,只能通过Docker构建,旧电脑验证原环境仍可正常构建,但Docker容器中构建失败。
- Makefile改动:旧版未适配Docker,新版针对Docker环境做了适配调整。
- 问题发生阶段:编译子目录过程无异常,错误出现在链接阶段,对应的Makefile链接代码如下:
# # Link $(BONEOS_BIN): $(libraries) $(LINKER_SCRIPT) $(LD) $(LDPARAMS) \ -T $(LINKER_SCRIPT) \ -o $@ \ --start-group $(libraries) --end-group \ -Map=BoneOS.map \ -L$(LIBGCCDIR) -l$(LIBGCCNAME)
- 错误类型:链接时触发大量多重定义错误,即同一个符号被多次定义,导致链接失败。
- 最终目标:在Docker容器中成功构建出ISO镜像,将镜像拉取到本地M1 Mac并运行。
内容的提问来源于stack exchange,提问作者amanuel2
相关产品推荐
相关产品推荐

