Debian一个槽点是gcc/g++/gfortran-multilib和交叉编译工具链如gcc/g++/gfortran-riscv64-linux-gnu会互相卸载,解决办法如下:
1、安装build-essential(gcc/g++/libc6-dev/make/dpkg-dev)和gfortran,记下被安装的gcc版本,这里假设被安装的是gcc-12
sudo apt install build-essential gfortran
2、multilib安装带版本号的包并创建asm符号链接
事实上gcc-multilib仅含有链接到x86_64-linux-gnu/asm的符号链接/usr/include/asm,而g++/gfortran-multilib是空包,因此实际上不必安装这些包,带版本号的包不会和交叉编译工具链冲突,只安装带版本号的包,并手动创建符号链接即可
# --install-recommends=false防止libc6-dev-{i386,x32}试图安装gcc-multilib
sudo apt install --install-recommends=false g{cc,++,fortran}-12-multilib
# gcc-multilib创建了这个重要的链接,需要加上
sudo ln -sv x86_64-linux-gnu/asm /usr/include/asm
# 如果这个链接造成了交叉编译工具链异常,可以临时删除
sudo rm /usr/include/asm
x32程序如果需要运行的话,还需要sudo nano /etc/default/grub将相关内容改为下面的形式,然后sudo update grub文章来源:https://www.toymoban.com/news/detail-631699.html
GRUB_CMDLINE_LINUX_DEFAULT="quiet syscall.x32=y"
GRUB_CMDLINE_LINUX="syscall.x32=y"
3、安装其他交叉编译工具链文章来源地址https://www.toymoban.com/news/detail-631699.html
sudo apt install g{cc,++,fortran}-riscv-linux-gnu
到了这里,关于Debian如何让multilib和交叉编译工具链共存的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!