工控网首页
>

应用设计

>

工控解惑|英伟达显卡适配难题?

工控解惑|英伟达显卡适配难题?

不管你是来自国内,还是远在海外的网友,只要给电脑适配 NVIDIA 显卡,大概率会碰到那个经典难题:nvidia_drv.so 文件里找不到对应的符号,就像弹出个报错提示:undefined symbol: noPanoramiXExtension,是不是看着就头大?
咱先来瞅瞅论坛里各路网友的 “自救” 大招:
网友 A 那叫一个简单粗暴,疯狂下载安装各种版本的 nvidia-driver,心里想着,“我多装几个,总有一个能行吧!”
网友 B 则把目光瞄准了 xserver,又是给它升级,又是让它降级,嘴里念叨着 “肯定是兼容性捣的鬼”。
再看看 Archlinux 论坛这位网友,在标题为 [SOLVED] Nvidia driver not loading / Newbie Corner / Arch Linux Forums 的帖子里分享经验,说自己在高手指导下设置了个环境变量 LD_BIND_NOW,这才把问题给摁住了。
不过说实话,虽说大家办法各异,但有时候我忍不住吐槽,这些招啊,好多都治标不治本,越折腾越让人迷糊,跟玄学似的。
得,咱不扯那些没用的了,下面就好好讲讲到底该咋解决这个麻烦事儿。

给你们看看常见的错误场景:当你执行 nvidia-smi 指令,转头再去查看 X 的运行日志,保准会瞧见这么一行扎眼的报错:Nvidia_drv.so : undefined symbol: noPanoramiXExtension。

2df71dded01d4093a80eeeff156de71e.png

a629ddf724d64b7396daf4b0dbdaf896.png

这错误在英伟达显卡适配的时候频繁冒头,为啥会找不到符号呢?其实啊,是找不到 xserver 里的符号。这时候,就得钻进 xserver 的源代码里一探究竟。

6762ff0f8ab3487f97287c490f391ee3.png

耐着性子找啊找,嘿,在 os/utils.c 这个文件里发现了线索,旁边还有个注释写着:/* Xinerama 是默认关闭的,除非通过 +xinerama 开启 */,啥意思呢?就是说 xinerama 这个拓展功能,默认是关着的,没开启呢。

1d213e4897d040889edadbea996d7cce.png

那咱就动手把它打开,再重新编译一遍。另外要注意,xserver 1.21 版本往上走,它会用 pkgconfig 来检测系统里有没有 xinerama,要是检测到有,就自动帮你打开,是不是还挺智能?那咱就顺着它的意思,先安装 xinerama,在终端敲一行:dnf install libxinerama1。

60ca352b25cc4885906cd0654b3575a2.png

接着再回 xserver 代码里瞅瞅,执行一下 menson build,这下妥了,该有的都有了。下一步,麻溜地编译安装:ninja && ninja install,完事重启系统,输入 reboot。

45e3aa0da9b5401f96327380874f4a7b.png

等系统重启好,再去查看显卡状态,哈,Nvidia 驱动已经稳稳当当地适配好啦,是不是还挺有成就感?

ba23d8263fc640d1917b3511c0f23e2e.png

还有什么关于操作系统的疑问,可以随时来我们网站交流切磋

也欢迎免费下载体验咱的国产嵌入式操作系统

https://www.onewos.com/

审核编辑(
王静
)
投诉建议

提交

查看更多评论
其他资讯

查看更多

工控解决方案|赋能新一代工业机器人的国产操作系统

工控独家|基于实时linux的国产化PLC解决方案

工控联盟|国科环宇成为高端装备制造联合实验室初始成员单位

工控联合|Linux与EtherCAT的硬实时解决方案

工控重磅|望获实时Linux系统和创龙科技TL3562-MiniEVM开发板适配成功