之前在centos7下遇到因gcc版本問題導致編譯出來的內核模塊插入后移除時報Device or resource busy異常,詳見 https://www.cnblogs.com/BoyTNT/p/14990517.html,當時排查出來編譯時使用的gcc與系統gcc版本不一致導致的,今天試着升級一下gcc。
默認使用yum install gcc安裝出來的gcc版本是4.8.5,可以升級到8.3.1,需要執行:
yum install centos-release-scl yum install devtoolset-8-gcc*
安裝完成后新版的gcc與g++安裝在/opt/rh/devtoolset-8目錄下,如果需要臨時生效,可以執行:
source /opt/rh/devtoolset-8/enable
如果需要永久生效,可以把devtoolset-8里的gcc和g++鏈接到/usr/bin去:
mv /usr/bin/gcc /usr/bin/gcc-4.8.5 ln -s /opt/rh/devtoolset-8/root/bin/gcc /usr/bin/gcc mv /usr/bin/g++ /usr/bin/g++-4.8.5 ln -s /opt/rh/devtoolset-8/root/bin/g++ /usr/bin/g++
再用gcc -v就能看到版本已變為8.3.1。此時編譯出的內核模塊就能正常rmmod卸載了。