无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 12788|回复: 102
打印 上一主题 下一主题

[讨论] 使用高版本 GCC 编译 GRUB4DOS

    [复制链接]
跳转到指定楼层
#
发表于 2023-2-23 11:39:46 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
本帖最后由 wintoflash 于 2023-2-23 22:36 编辑

【仅供测试,请勿用于生产环境】
Github 上一位埃及的朋友提交了让 GRUB4DOS 在高版本 GCC 下也可以成功编译的 PR,
目前我测试 GCC 7.5, GCC 8.4, GCC 9.5, GCC 11.3 都能正常编译。
grub4dos-0.4.6a-2023-02-23-gcc-11.3.7z (311.17 KB, 下载次数: 88)
grub4dos-0.4.6a-2023-02-23-gcc-9.5.7z (311.06 KB, 下载次数: 34)
grub4dos-0.4.6a-2023-02-23-gcc-8.4.7z (309.7 KB, 下载次数: 34)
grub4dos-0.4.6a-2023-02-23-gcc-7.5.7z (309.97 KB, 下载次数: 36)
GCC 10.4 要稍微改一下才能通过编译。
grub4dos-0.4.6a-2023-02-23-gcc-10.4.7z (310.86 KB, 下载次数: 40)
有空的话大家可以测试一下,看看各项功能是否都正常。
https://github.com/chenall/grub4dos/pull/395
@chenall @求道者

点评

所有专业级高手的都不太活跃了 除了大大!哈哈  发表于 2023-2-24 12:44

评分

参与人数 5无忧币 +25 收起 理由
wuxin9712 + 5 赞一个!
879792799 + 5 很给力!
2011yaya2007777 + 5 赞一个!
freesoft00 + 5
holley2008 + 5 赞一个!

查看全部评分

来自 93#
 楼主| 发表于 2023-2-23 15:03:26 | 只看该作者
我寻思这个帖子也不是资源分享啊,是请人来找茬的。回复“谢谢分享”的都是机器人?

点评

也别太苛求了。啊哈哈,向我这样水平的外行不懂的人很多,以为就是分享了新版。当成成品来用了。  详情 回复 发表于 2023-2-23 22:33
回复

使用道具 举报

92#
发表于 2024-11-9 17:20:34 | 只看该作者
感谢分享
回复

使用道具 举报

91#
发表于 2024-11-9 17:10:50 | 只看该作者
赞赞
回复

使用道具 举报

90#
发表于 2023-10-17 09:26:07 | 只看该作者
帖后跳转到最后一页
回复

使用道具 举报

89#
发表于 2023-10-13 21:02:31 | 只看该作者
怎么编译啊? 我解压了,用make报错
回复

使用道具 举报

88#
 楼主| 发表于 2023-6-20 18:35:07 | 只看该作者
chesson 发表于 2023-6-19 22:48
小白一枚,借宝地求教个问题:几年前我学习细细哥的U盘启动VHD的帖子,随便找个成品PE,再借助FbinstTool就 ...

fbinst 1.6 和 1.7 版本是不兼容的。
现在用 fbinst 1.7 做的 ud,必须用 1.7 版本的 fbinst / FbinstTool 来打开。
回复

使用道具 举报

87#
发表于 2023-6-19 22:48:04 | 只看该作者
小白一枚,借宝地求教个问题:几年前我学习细细哥的U盘启动VHD的帖子,随便找个成品PE,再借助FbinstTool就可以看到存在的UD分区,随便编辑菜单文件,现在新版的PE,为什么隐藏分区全都无法查看了?是需要什么新的软件工具才行吗?

点评

fbinst 1.6 和 1.7 版本是不兼容的。 现在用 fbinst 1.7 做的 ud,必须用 1.7 版本的 fbinst / FbinstTool 来打开。  详情 回复 发表于 2023-6-20 18:35
回复

使用道具 举报

86#
 楼主| 发表于 2023-6-18 21:02:03 | 只看该作者
chenall 发表于 2023-6-18 16:30
前一段时间刚好比较忙..

刚看到 yaya 已经处理好了

能不能解决一下 efi 分支这个报错

点评

已处理,应该下次就不报错了.  发表于 2023-7-5 20:36
回复

使用道具 举报

85#
发表于 2023-6-18 16:30:28 | 只看该作者
wintoflash 发表于 2023-6-5 11:51
前面说了,这个得chenall来弄。
https://github.com/chenall/grub4dos-build/blob/main/start-grubdev.s ...

前一段时间刚好比较忙..

刚看到 yaya 已经处理好了

点评

能不能解决一下 efi 分支这个报错 [attachimg]528180[/attachimg]  详情 回复 发表于 2023-6-18 21:02
回复

使用道具 举报

84#
发表于 2023-6-9 18:20:05 来自手机 | 只看该作者
G4D,G4E 成功发布,可以从两个官网地址下载了。
回复

使用道具 举报

83#
 楼主| 发表于 2023-6-5 11:51:49 | 只看该作者
2011yaya2007777 发表于 2023-6-5 11:16
把grub4dos推送上去了。
修改了 .github/workflows 及 .travis.yml,似乎没有起作用,仍然使用 ubuntu-18. ...

前面说了,这个得chenall来弄。
https://github.com/chenall/grub4 ... in/start-grubdev.sh
他写死了 gcc 版本。

点评

前一段时间刚好比较忙.. 刚看到 yaya 已经处理好了  详情 回复 发表于 2023-6-18 16:30
回复

使用道具 举报

82#
发表于 2023-6-5 11:16:19 | 只看该作者
把grub4dos推送上去了。
修改了 .github/workflows 及 .travis.yml,似乎没有起作用,仍然使用 ubuntu-18.04 编译。
卡在 “调用专用编译环境进行编译”

Run chenall/grub4dos-build@main
Run $GITHUB_ACTION_PATH/tmate.sh
Run cd $GITHUB_ACTION_PATH && chmod +x ./start-grubdev.sh && ./start-grubdev.sh
......
E: Unable to locate package gcc-4.8
E: Couldn't find any package by glob 'gcc-4.8'
E: Unable to locate package gcc-4.8-multilib
E: Couldn't find any package by glob 'gcc-4.8-multilib'
Error: Process completed with exit code 100.

chenall/grub4dos-build@main, $GITHUB_ACTION_PATH/tmate.sh,  ./start-grubdev.sh 这些都不在现有的文件包内。

点评

前面说了,这个得chenall来弄。 https://github.com/chenall/grub4dos-build/blob/main/start-grubdev.sh 他写死了 gcc 版本。  详情 回复 发表于 2023-6-5 11:51
回复

使用道具 举报

81#
发表于 2023-6-4 22:18:25 来自手机 | 只看该作者
2011yaya2007777 发表于 2023-6-4 18:30
这个补丁我一起推上去。不知道还有没有其他问题,到时再请教你。

你们几个高手还是加个微信好了,github沟通感觉不太畅快啊。
回复

使用道具 举报

80#
发表于 2023-6-4 21:50:47 来自手机 | 只看该作者
wintoflash 发表于 2023-6-4 18:10
grub4dos那边用的是chenall的编译脚本,写死了gcc版本。我给chenall提了issue,还没回复。
https://gith ...

破github又卡又墙,chenall没有看到这个issue吧。按说是有邮件提醒的呀?chenall没有注意到吧。
回复

使用道具 举报

79#
发表于 2023-6-4 18:30:49 来自手机 | 只看该作者
这个补丁我一起推上去。不知道还有没有其他问题,到时再请教你。

点评

你们几个高手还是加个微信好了,github沟通感觉不太畅快啊。  详情 回复 发表于 2023-6-4 22:18
回复

使用道具 举报

78#
 楼主| 发表于 2023-6-4 18:10:17 | 只看该作者
2011yaya2007777 发表于 2023-6-4 18:00
好的。明天把我 grub4dos,grub4efi 推上去。

grub4dos那边用的是chenall的编译脚本,写死了gcc版本。我给chenall提了issue,还没回复。
https://github.com/chenall/grub4dos-build/issues/1

点评

破github又卡又墙,chenall没有看到这个issue吧。按说是有邮件提醒的呀?chenall没有注意到吧。  详情 回复 发表于 2023-6-4 21:50
回复

使用道具 举报

77#
发表于 2023-6-4 18:00:21 来自手机 | 只看该作者
好的。明天把我 grub4dos,grub4efi 推上去。

点评

grub4dos那边用的是chenall的编译脚本,写死了gcc版本。我给chenall提了issue,还没回复。 https://github.com/chenall/grub4dos-build/issues/1  详情 回复 发表于 2023-6-4 18:10
回复

使用道具 举报

76#
 楼主| 发表于 2023-6-4 17:41:37 | 只看该作者
2011yaya2007777 发表于 2023-6-4 16:58
@wintoflash
今天上传了外部命令补丁。
修改 ubuntu 为 22.04,gcc 为 11。

现在编译通过了。
暂时禁止了 fbinst, loadbin, makemod, makerom, wee, weesetup 等 Windows 下工具的编译。这些玩意要用 mingw 来编译。
回复

使用道具 举报

75#
发表于 2023-6-4 16:58:37 | 只看该作者
@wintoflash
今天上传了外部命令补丁。
修改 ubuntu 为 22.04,gcc 为 11。
但是卡在初始化。
提示:
E: Failed to fetch http://azure.archive.ubuntu.com/ ... ubuntu2.1_amd64.deb  404  Not Found [IP: 40.119.46.219 80]
E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?
Error: Process completed with exit code 100.

点评

现在编译通过了。 暂时禁止了 fbinst, loadbin, makemod, makerom, wee, weesetup 等 Windows 下工具的编译。这些玩意要用 mingw 来编译。  详情 回复 发表于 2023-6-4 17:41
回复

使用道具 举报

74#
发表于 2023-6-1 12:55:18 来自手机 | 只看该作者
试一试,要学的挺多。
回复

使用道具 举报

73#
发表于 2023-6-1 12:37:04 来自手机 | 只看该作者
包名字可以模糊搜索
apt search package_name
或者
apt search package_name|grep "package_name"
回复

使用道具 举报

72#
发表于 2023-6-1 10:39:54 | 只看该作者
本帖最后由 2011yaya2007777 于 2023-6-1 11:02 编辑

我不懂,是照抄埃及朋友的。
已经成功下载并编译成功!
谢谢wintoflash超级版主!
回复

使用道具 举报

71#
 楼主| 发表于 2023-6-1 10:04:21 | 只看该作者
2011yaya2007777 发表于 2023-6-1 09:30
是没有装。

sudo apt install -y gcc7-multilib gcc8-multilib gcc9-multilib gcc10-multilib

gcc-10-multilib
你写错了
回复

使用道具 举报

70#
发表于 2023-6-1 09:30:45 | 只看该作者
你是不是没装对应版本的 gcc-multilib

是没有装。

sudo apt install -y gcc7-multilib gcc8-multilib gcc9-multilib gcc10-multilib
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成                 
E: 无法定位软件包 gcc7-multilib
E: 无法定位软件包 gcc8-multilib
E: 无法定位软件包 gcc9-multilib
E: 无法定位软件包 gcc10-multilib

在网上搜了搜,说是更新源,添加了清华源还是不行。

点评

gcc-10-multilib 你写错了  详情 回复 发表于 2023-6-1 10:04
回复

使用道具 举报

69#
发表于 2023-6-1 05:31:55 来自手机 | 只看该作者
本帖最后由 liuzhaoyzz 于 2023-6-1 06:45 编辑
wintoflash 发表于 2023-5-31 22:05
你是不是没装对应版本的 gcc-multilib
比如用的是 gcc-10,那就要装 gcc-10-multilib
我是用 update-al ...


在一个系统里安装多个gcc版本?之前看过这种骚操作,感觉依赖冲突问题很不好处理啊?高版本的ubuntu,低版本的gcc有的依赖根本就安装不上啊?
回复

使用道具 举报

68#
 楼主| 发表于 2023-5-31 22:05:19 | 只看该作者
2011yaya2007777 发表于 2023-5-30 16:53
奇怪了,W超版你可以使用gcc各版本编译成功grldr,而我只能使用gcc-11.3编译成。使用其他版本编译,错误提 ...

你是不是没装对应版本的 gcc-multilib
比如用的是 gcc-10,那就要装 gcc-10-multilib
我是用 update-alternatives 来切换 GCC 版本的。

点评

在一个系统里安装多个gcc版本?之前看过这种骚操作,感觉依赖冲突问题很不好处理啊?  详情 回复 发表于 2023-6-1 05:31
回复

使用道具 举报

67#
发表于 2023-5-30 17:28:29 | 只看该作者
学习
回复

使用道具 举报

66#
发表于 2023-5-30 16:53:48 | 只看该作者
奇怪了,W超版你可以使用gcc各版本编译成功grldr,而我只能使用gcc-11.3编译成。使用其他版本编译,错误提示没有_start,然后退出。

点评

你是不是没装对应版本的 gcc-multilib 比如用的是 gcc-10,那就要装 gcc-10-multilib 我是用 update-alternatives 来切换 GCC 版本的。 [attachimg]527370[/attachimg]  详情 回复 发表于 2023-5-31 22:05
回复

使用道具 举报

65#
发表于 2023-5-29 21:29:42 | 只看该作者
本帖最后由 2011yaya2007777 于 2023-5-30 05:00 编辑
用 dd ?

终于使用dd搞定了。各种因素综合考虑,比预想的复杂一些。

$< 是当前 .o 文件,$@ 是当前 .mod 文件。
回复

使用道具 举报

64#
 楼主| 发表于 2023-5-29 09:18:02 | 只看该作者
2011yaya2007777 发表于 2023-5-28 17:49
使用 gcc11.3 编译 g4eext,会在文件头部增加 16 字节:
00000000   04 00 00 00 10 00 00 00  05 00 00 0 ...

用 dd ?
  1. dd if=$< of=$@ bs=1 skip=16
复制代码

回复

使用道具 举报

63#
发表于 2023-5-28 17:49:49 | 只看该作者
使用 gcc11.3 编译 g4eext,会在文件头部增加 16 字节:
00000000   04 00 00 00 10 00 00 00  05 00 00 00 47 4E 55 00            GNU
00000016   02 00 00 C0 04 00 00 00  03 00 00 00 00 00 00 00     ?     
这影响外置命令执行。

1. 编译时增加什么参数,避免这 16 字节。
2. 生成外部命令后使用脚本删除这 16 字节。

Makefile 文件内容如下:
ifeq ($(CC),cc)
     CC := gcc
endif
OBJCOPY := objcopy
RM      := rm
MV      := mv
MKDIR   := mkdir

DATE = $(shell date -u +%Y-%m-%d)

GCCVERSIONGTEQ5 := $(shell expr `$(CC) -dumpversion | cut -f1 -d.` \>= 5)

CFLAGS := -Wl,--build-id=none -m64 -mno-sse -nostdlib \
          -fno-zero-initialized-in-bss -fno-function-cse \
          -fshort-wchar -fno-jump-tables -Wl,-N

ifeq "$(GCCVERSIONGTEQ5)" "1"
        CFLAGS += -no-pie
else
        CFLAGS += -fPIE
endif

OBJECTS := $(patsubst %.c,%.o,$(wildcard *.c)) fat/fat.o
MODULES := $(patsubst %.c,%.mod,$(wildcard *.c)) fat/fat.mod

.PHONY: all
all: prepare $(MODULES)
        zip -9 -j ../g4eext-$(DATE).zip bin/*

%.o: %.c
        $(CC) $(CFLAGS) -Iinclude/ $< -o $@

%.mod: %.o
        $(OBJCOPY) -O binary $< $@
#        $(MV) $@ bin/$$(basename -s .mod $@)
        $(MV) $@ bin/$$(basename $@ .mod)

.PHONY: prepare
prepare:
        $(MKDIR) -p bin

.PHONY: clean
clean:
        $(RM) -f *.o *.mod bin/*

点评

用 dd ?  详情 回复 发表于 2023-5-29 09:18
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-25 13:02

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表