0

I'm trying to install the proprietary drivers for my Radeon R9 Fury graphics card. The files are fglrx_15.302, etc., and I'm getting them from here at AMD Drivers:

I'm installing on Ubuntu Server 14.04.5 using the instructions on the linked page.

After verifying the packages aren't already installed, I try to build them with (using * to avoid typing the very long filenames):

sudo dpkg -i fglrx_15.302* fglrx-core_15.302* fglrx-dev_15.302* \
fglrx-amdcccle_15.302*

The build output contains this line:

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

The log shows 2 errors in the file 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))

So, the build is failing because of errors in that file

Looking at the Release Notes on the linked page, I see that my kernel (4.4) is outside their recommended range (2.6 to 3.19), and that my version of glibc is 2.19, which is outside their recommended range of 2.2 or 2.3. Normally, I would proceed by updating the kernel and glibc: however, that would roll back the kernel quite a ways, and (from Googling) I haven't found a way to install glibc 2.2 on 14.04 other than building it from source.

My question is: should I bite the bullet and update them anyway, or is this unlikely to solve the problem (and if so, what do I do now)?

0

OP here. I ended up downloading on older version of the drivers (15.2) from AMD's website and doing a clean install. It failed with one error, which was that the compiler couldn't find the file i387.h. On my kernel, this is because that file was renamed api.h, and moved to a different directory by the Linux team (obviously since the driver package had been built). I found it here:

/usr/src/linux-headers-4.40-42-generic/arch/x86/include/asm/fpu/api.h

At first, I renamed it to i387.h and moved it to the /asm directory, where the package expected it. That fixed the error, but I also got other #include errors for mman.h, poll.h, and ioctl32.h. The first two files have also moved since the package build, while I can't find ioctl32.h at all (and am not even sure I need it for a 64-bit build).

Right now, I'm trying to decide whether to move the other 2 headers and see if it builds without ioctl32.h, or go into the package and change the #include statements to the correct locations (which is probably the right way to do it, but also a big pain).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.