请问从哪可以下载到AOSC的GCC-13.2.0?

我在3A6000上安装了最新的AOSC后发现系统自带的GCC版本为GCC-14.1,但是我想用GCC-13.2.0,所以请问哪里可以下载到?

您好:

AOSC OS 软件源中目前只有一个 GCC 版本。我们刚开始做 GCC 多版本支持,请您耐心等候;如有特殊需求,请您自行编译。下面将提供编译配置用的参数及步骤。

# 下载 GCC 13.2 源码包
mkdir gcc && cd gcc
wget https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/gcc-13.2.0/gcc-13.2.0.tar.xz
tar xf gcc-13.2.0.tar.xz
# 准备编译
cd gcc-13.2.0
mkdir build && cd build
../configure --host=loongarch64-aosc-linux-gnu --build=loongarch64-aosc-linux-gnu --target=loongarch64-aosc-linux-gnu \
    --prefix=$HOME/.local/lib/gcc-13 --program-suffix=-13 --libdir=$HOME/.local/lib/gcc-13/lib \
    --libexecdir=$HOME/.local/lib/gcc-13/lib --enable-shared --disable-multilib --enable-languages=c,c++,lto \
    --enable-default-pie --enable-default-ssp --enable-threads
# 编译并安装到家目录下的 .local/lib/gcc-13
make -j$(nproc)
make install

编译安装完毕后,您可以使用以下方式来指定编译器:

export PATH=$HOME/.local/lib/gcc-13/bin:$PATH
# 对于 Autotools:
../configure CC=gcc-13 CXX=g++-13
# 对于 CMake:
cmake .. -DCMAKE_C_COMPILER=gcc-13 -DCMAKE_CXX_COMPILER=g++-13
# 对于 Meson
CC=gcc-13 CXX=g++-13 meson setup build
# 对于内核
make CC=gcc-13

由于上例中编译的 GCC 是安装在您编译时所在用户的当前目录下的,因此如果您要以 root 用户的身份使用编译的 GCC 13.2,您需要将 $HOME 替换为用户所在的家目录路径:

aosc@MyHost [ ~ ] $ export PATH=$HOME/.local/gcc-13/bin:$PATH
aosc@MyHost [ ~ ] $ sudo -s
[sudo] aosc 的密码:
root@MyHost [ aosc ] # export PATH=/home/aosc/.local/gcc-13/bin:$PATH

一旦我们将多版本支持的 GCC 推送至主源,您就可以删除您家目录中安装的 GCC 了。

1 Like

谢谢回复

我看网上说AOSC中的GCC-13.2与公版GCC-13.2相比加入了一些Patch,从而编译出来的程序性能会更好,请问如何获取AOSC版本的GCC-13.2呢?或者如何通过自己编译来得到AOSC版本的GCC-13.2?

您好:

您可以通过克隆我们的补丁追踪仓库获得打过补丁的 GCC 源码:

git clone -b aosc/releases/gcc-13.2.0 https://github.com/AOSC-Tracking/gcc

您也可以访问这个仓库,切换到 aosc/releases/gcc-13.2.0 分支,然后点击绿色的 “Download” 按钮下载打包好的源码,或者使用下列链接:

wget -O gcc-13.2.0-aosc.tar.gz https://github.com/AOSC-Tracking/gcc/archive/refs/heads/aosc/releases/gcc-13.2.0.tar.gz

请问Configure选项有什么要求吗?我下载了源码,按照您上面说的Configure选项生成Makefile后编译报错
Configure选项为:

../gcc-13.2.0-aosc/configure --host=loongarch64-aosc-linux-gnu --build=loongarch64-aosc-linux-gnu --target=loongarch64-aosc-linux-gnu --program-suffix=-13 --prefix=$HOME/Code/gcc-13.2.0-aosc/gcc-13.2.0-aosc-install --libdir=$HOME/Code/gcc-13.2.0-aosc/gcc-13.2.0-aosc-install/lib --libexecdir=$HOME/Code/gcc-13.2.0-aosc/gcc-13.2.0-aosc-install/lib --enable-shared --enable-threads --disable-multilib --enable-checking=release --enable-default-pie --enable-default-ssp --enable-languages=c,c++,fortran,lto

make -j4产生的错误信息为:

loongarch64-aosc-linux-gnu-g++ -std=c++11 -c   -g -DIN_GCC     -fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wno-format -Wmissing-format-attribute -Wconditionally-supported -Woverloaded-virtual -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings  -Wno-error -DHAVE_CONFIG_H  -DGENERATOR_FILE -I. -Ibuild -I../../gcc-13.2.0-aosc/gcc -I../../gcc-13.2.0-aosc/gcc/build -I../../gcc-13.2.0-aosc/gcc/../include  -I../../gcc-13.2.0-aosc/gcc/../libcpp/include  \
        -o build/gengtype-lex.o gengtype-lex.cc
loongarch64-aosc-linux-gnu-g++ -std=c++11 -c   -g -DIN_GCC     -fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wno-format -Wmissing-format-attribute -Wconditionally-supported -Woverloaded-virtual -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings   -DHAVE_CONFIG_H  -DGENERATOR_FILE -I. -Ibuild -I../../gcc-13.2.0-aosc/gcc -I../../gcc-13.2.0-aosc/gcc/build -I../../gcc-13.2.0-aosc/gcc/../include  -I../../gcc-13.2.0-aosc/gcc/../libcpp/include  \
        -o build/gengtype-parse.o ../../gcc-13.2.0-aosc/gcc/gengtype-parse.cc
cc1plus: fatal error: gengtype-lex.cc: No such file or directory
compilation terminated.
make[3]: *** [Makefile:2859: build/gengtype-lex.o] Error 1
make[3]: *** Waiting for unfinished jobs....
rm gfdl.pod gcc.pod gcov-dump.pod gcov-tool.pod fsf-funding.pod gpl.pod cpp.pod gcov.pod lto-dump.pod
make[3]: Leaving directory '/home/core/Code/gcc-13.2.0-aosc/gcc-13.2.0-aosc-objdir/gcc'
make[2]: *** [Makefile:4972: all-stage1-gcc] Error 2
make[2]: Leaving directory '/home/core/Code/gcc-13.2.0-aosc/gcc-13.2.0-aosc-objdir'
make[1]: *** [Makefile:26543: stage1-bubble] Error 2
make[1]: Leaving directory '/home/core/Code/gcc-13.2.0-aosc/gcc-13.2.0-aosc-objdir'
make: *** [Makefile:1081: all] Error 2

我的目录结构为:

gcc-13.2.0-aosc     //source code
gcc-13.2.0-aosc-objdir   //build dir
gcc-13.2.0-aosc-install  //install dir
// 3 directories in the same level

sudo apt install flex后问题得到解决,感谢!

您好,久等了:

我们打包好了 GCC 13,您现在可以加入 gcc-13-13.3.0 测试源来测试系统打包的 GCC 13 了:

oma topics --opt-in gcc-13-13.3.0

安装好的 GCC 13.3 存在于系统 PATH 中,您可以直接指定 CC=gcc-13CXX=g++-13。您可以暂时移除您之前编译安装的 GCC 13.2.0 了。

GCC 13 已推入稳定源

Thanks for the two of you