VirtualBox Ubuntu 22.04下CH340驱动编译问题:编译器一致性及正常编译调整方法咨询
VirtualBox Ubuntu 22.04下CH340驱动编译问题:编译器一致性及正常编译调整方法咨询
嗨,我来帮你捋清楚这个问题~
首先回答你第一个疑问:x86_64-linux-gnu-gcc-12和gcc-12其实是同一个编译器!你看版本号完全一致,都是Ubuntu 12.3.0-1ubuntu1~22.04的版本。之所以会出现这个警告,是因为内核编译时用的是带目标架构前缀的完整编译器名称,而你当前执行make时调用的是简化的gcc-12命令——系统里gcc-12其实是x86_64-linux-gnu-gcc-12的软链接,功能完全一样,只是名字不同,内核的严格检查机制把这个名字差异当成了“编译器不同”的提示,但实际版本是匹配的。
接下来看怎么让make正常完成驱动编译:
- 先确认编译依赖是否齐全:有时候即使装了内核头文件,也可能缺基础编译工具,执行这条命令补全依赖:
sudo apt install linux-headers-$(uname -r) build-essential - 手动指定与内核编译一致的编译器名称,消除警告同时触发编译:在驱动目录下执行
这样就会用内核识别的编译器名称来编译,能跳过这个名字匹配的警告,正常执行编译流程。make CC=x86_64-linux-gnu-gcc-12 - 如果你想一劳永逸,也可以修改驱动目录下的Makefile:找到里面指定编译器的行(比如
CC = gcc),把它改成CC = x86_64-linux-gnu-gcc-12,或者直接用CC ?= x86_64-linux-gnu-gcc-12这样的变量写法,以后直接执行make就没问题了。 - 编译完成后,你可以用
sudo insmod ch341.ko(如果生成的模块文件是这个名字的话)手动加载驱动,或者执行sudo make install(如果驱动的Makefile支持安装逻辑)来完成驱动安装。
备注:内容来源于stack exchange,提问作者MianQi
相关产品推荐
相关产品推荐

