我正在尝试为我的 Radeon R9 Fury 显卡安装专有驱动程序。这些文件是 fglrx_15.302 等,我是从AMD 驱动程序:
我正在使用链接页面上的说明在 Ubuntu Server 14.04.5 上进行安装。
验证软件包尚未安装后,我尝试使用以下命令构建它们(使用 * 以避免输入很长的文件名):
sudo dpkg -i fglrx_15.302* fglrx-core_15.302* fglrx-dev_15.302* \
fglrx-amdcccle_15.302*
构建输出包含这一行:
Error! Bad return status for module build on kernel: 4.4.0-38-generic (x86_64)
Consult /var/lib/dkms/fglrx-core/15.302/build/make.log for more information
日志显示文件中有 2 个错误firegl_public.c:
error: void value not ignored as it ought to be
len=seq_printf(m, "%d\n", major);
error: 'XSTATE_FP' undeclared (first use in this function)
if (!(fpu->state.xsave.header.xfeatures & XSTATE_FP))
因此,由于该文件中的错误,构建失败
查看链接页面上的发行说明,我发现我的内核 (4.4) 超出了他们的推荐范围(2.6 到 3.19),并且我的 glibc 版本是 2.19,超出了他们的推荐范围 2.2 或 2.3。通常,我会继续更新内核和 glibc:但是,这会以相当多的方式回滚内核,并且(来自 Google 搜索)除了从源代码构建之外,我还没有找到在 14.04 上安装 glibc 2.2 的方法。
我的问题是:我是否应该硬着头皮更新它们,或者这不太可能解决问题(如果是这样,我现在该怎么办)?
答案1
在这里。我最终从 AMD 网站下载了旧版本的驱动程序 (15.2) 并进行了全新安装。它因一个错误而失败,即编译器找不到该文件i387.h。在我的内核上,这是因为该文件被重命名api.h,并被 Linux 团队移动到另一个目录(显然是因为驱动程序包已构建)。我在这里找到了它:
/usr/src/linux-headers-4.40-42-generic/arch/x86/include/asm/fpu/api.h
一开始我把它改名为i387.h并将其移至/asm目录,包所期望的位置。这修复了错误,但我还收到了其他 #include 错误mman.h,民意调查.h, 和ioctl32.h。自包构建以来,前两个文件也已移动,但我找不到ioctl32.h根本没有(而且我什至不确定我是否需要它来构建 64 位)。
现在,我正在尝试决定是否移动其他 2 个标头,看看它是否可以在没有ioctl32.h,或者进入包并将 #include 语句更改到正确的位置(这可能是正确的方法,但也是一个很大的痛苦)。