Closed YingziWo closed 4 weeks ago
升级的编译器试试,目测gcc版本是不是太老了
# 添加PPA源
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt update
# 安装最新的GCC(假设为GCC 11)
sudo apt install gcc-11 g++-11
# 设置默认版本
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 100
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-11 100
# 配置默认版本
sudo update-alternatives --config gcc
sudo update-alternatives --config g++
# 验证安装
gcc --version
g++ --version
升级的编译器试试,目测gcc版本是不是太老了
# 添加PPA源 sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt update # 安装最新的GCC(假设为GCC 11) sudo apt install gcc-11 g++-11 # 设置默认版本 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 100 sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-11 100 # 配置默认版本 sudo update-alternatives --config gcc sudo update-alternatives --config g++ # 验证安装 gcc --version g++ --version
谢谢指导!升级编译器到11版本和恢复项目原来上游分支后,届时再报编译固件结果。
升级的编译器试试,目测gcc版本是不是太老了
# 添加PPA源 sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt update # 安装最新的GCC(假设为GCC 11) sudo apt install gcc-11 g++-11 # 设置默认版本 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 100 sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-11 100 # 配置默认版本 sudo update-alternatives --config gcc sudo update-alternatives --config g++ # 验证安装 gcc --version g++ --version
谢谢指导!升级编译器到11版本和恢复项目原来上游分支后,届时再报编译固件结果。
查看编译环境ubuntu20.04.6 官方版本的gcc编译器版本是: gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0 Copyright (C) 2019 Free Software Foundation, Inc.
g++ (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0 Copyright (C) 2019 Free Software Foundation, Inc.
按指导步骤升级到11版本后,系统的编译器版本显示: gcc (Ubuntu 11.4.0-2ubuntu1~20.04) 11.4.0 Copyright (C) 2021 Free Software Foundation, Inc.
g++ (Ubuntu 11.4.0-2ubuntu1~20.04) 11.4.0 Copyright (C) 2021 Free Software Foundation, Inc.
在此升级gcc版本的ubuntu20.04.6编译环境下,删老的lede目录,重新克隆lede项目,再重新走了一遍lede+passwall的源码编译步骤,并且是全选了passwall的所有可选配置选项,这次编译没有出现本题“bug”的现象出现,一步成功,确实是编译器的问题。
同时也去看了看手头上还有的ubuntu22.04.4版本的编译器,这个ubuntu官方版本缺省的gcc编译器也是11版本的,具体是: gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0 Copyright (C) 2021 Free Software Foundation, Inc.
g++ (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0 Copyright (C) 2021 Free Software Foundation, Inc. 于是在这个ubuntu22.04.4版本的环境下也去走了一遍lede+passwall的源码编译步骤,也是一步成功。
下面图片是ubuntu20.04.6 官方版本缺省gcc版本升级到11版本编译出来的固件安装后,passwall主要页面(每张图的左边)和在ubuntu20.04.6 官方版本缺省gcc版本下,同时更改passwall依赖包gn上游的分支到23年六月份后,再编译出来的固件进行安装后得到的passwall主要页面(每张图的右边)对照图,除了有一张可能正好碰到Hysteria升级版本号显示不一样外,在使用者的界面上看是相同的。
界面对比不一样的地方:
于是,小白好奇心去看了看google开源项目gn到底是个干什么用的家伙,官方开场白里有这样一段总结性的介绍: GN 可以在大多数流行平台上为 C、C++、Rust、Objective C 和 Swift 源生成 Ninja 构建文件。 “Ninja”不是日本的忍者符号吗?生成“忍者”?思来想去,小白这样理解,也不知对不对:可能是开放性平台下码农们身处环境非常之险恶(处在各种各样的编程语言包围之下),为了能快速突破跨各种编程语言之间的界限限制(码农们能够熟练掌握的编程语言数量固然会受不同的限制),gn整合一个大家都适合使用的忍者性质工具(装备)供码农们采用,这个装备方便突围各种各样的编程语言包围环境,以利于提高编程和编译的效率。
描述您遇到的bug
编译过程中报错的信息
复现此Bug的步骤
1、编译环境:ubuntu20.04.6 2、依赖安装 3、openwrt: lede版本克隆 4、passwall:passwall和openwrt-passwall-packages两者的全部包,克隆到/lede/package/lean/passwall/目录下 5、按lede的编译步骤进行编译 6、在到make menuconfig这步时,在选中luci-app-passwall选择为的同时,其Configuration下的所有项都选择号,保存后退出 7、继续按lede的编译步骤编译 8、在执行make V=s -j1这步时报上述图片中的错误信息 9、经查此错误出自gn模块,由google开源项目而来,编译执行的代码是编译时克隆gn项目代码,不是本项目的代码 10、查看google上gn项目,发现该项目版本更新的频率非常高,于是试着更新本项目gn模块的上游分支源,如下图的红框部分 11、把红框中的三个参数换成最新的gn分支,编译错误依然存在 12、尝试换到去年六月份或之前的分支,替换gn目录下Makefile相应字段,编译能正常通过。只是不知道用以前的分支来编译,会不会影响到编译出来的固件功能? 去年六月参数如下: PKG_SOURCE_DATE:=2023-06-08 PKG_SOURCE_VERSION:=1cd35c1b722472e714c30d12031af81443bb20ae PKG_MIRROR_HASH:=53e4d6bd071f292a0363d44453e050fd2c22b3cccbe3e8eff2c41f22b0e13fbc
您想要实现的目的
见复现bug步骤内容
日志信息
见图片信息
截图
编译报错信息 更改gn上游分支信息
系统相关信息
lede的OpenWrt R24.8.1 / LuCI Master (git-24.182.36151-66d29de) 内核版本:6.6.40
其他信息
No response