hengdin

导航

 

之前在centos7下遇到因gcc版本问题导致编译出来的内核模块插入后移除时报Device or resource busy异常,详见​ ​https://www.cnblogs.com/BoyTNT/p/14990517.html,当时排查出来编译时使用的gcc与系统gcc版本不一致导致的,今天试着升级一下gcc。

默认使用yum install gcc安装出来的gcc版本是4.8.5,可以升级到10 版本,需要执行:

yum install centos-release-scl -y
yum install devtoolset-10-gcc* -y

安装完成后新版的gcc与g++安装在/opt/rh/devtoolset-10目录下,如果需要临时生效,可以执行:

source /opt/rh/devtoolset-10/enable

如果需要永久生效,可以把devtoolset-8里的gcc和g++链接到/usr/bin去:

mv /usr/bin/gcc /usr/bin/gcc-4.8.5
ln -s /opt/rh/devtoolset-10/root/bin/gcc /usr/bin/gcc
mv /usr/bin/g++ /usr/bin/g++-4.8.5
ln -s /opt/rh/devtoolset-10/root/bin/g++ /usr/bin/g++

再用gcc -v就能看到版本已变为10.2.1-11。此时编译出的内核模块就能正常rmmod卸载了。

原链接:https://www.cnblogs.com/BoyTNT/p/16039675.html 。非常感谢!

posted on 2022-05-16 18:43  hengdin  阅读(205)  评论(0)    收藏  举报