Как зафиксировать эту ошибку компиляции pngquant: “фатальная ошибка: uapi/linux/stddef.h: Никакой такой файл или каталог'”?

(Существующие ответы не обращаются к этой конкретной ситуации),

В настоящее время сообщение об ошибке:

In file included from /usr/include/stdio.h:33:0,
                 from pngquant.c:37:
/usr/src/linux-aws-headers-4.4.0-1075/include/linux/stddef.h:4:31: fatal error: uapi/linux/stddef.h: No such file or directory

Полный фон

Я пытаюсь скомпилировать pngquant из источника и я пытаюсь поместить выходные файлы в альтернативное местоположение.

pngquant имеет зависимость от libimagequant. Вот способ, которым я создаю код:

# Required dependency
apt-get install libpng16-dev

cd libimagequant-2.12.1
./configure --prefix=/usr/local/alt-location
make and sudo make install

Теперь это pngquantповорот

cd pngquant-2.12.1    
./configure --prefix=/usr/local/alt-location --with-libimagequant=/src/to/libimagequant

Если я скомпилирую его на распределении человечности, то это будет работать в конец, и двоичный файл сгенерирован.

$ make &&  sudo make install
make: Nothing to be done for 'all'.
mkdir -p '/usr/local/alt-location/bin'
mkdir -p '/usr/local/alt-location/share/man/man1'
install -m 0755 -p 'pngquant' '/usr/local/alt-location/bin/pngquant'
install -m 0644 -p 'pngquant.1' '/usr/local/alt-location/share/man/man1/'

Испытание с помощью дыма:

[10:20:13] sde:pngquant-2.12.1$ /usr/local/alt-location/bin/pngquant --version
2.12.0 (January 2018)

Однако, если я повторяю тот же процесс на экземпляре AWS ec2 (с гостеприимным), я получил эту ошибку:

$ make
gcc -fno-math-errno -funroll-loops -fomit-frame-pointer -Wall -std=c99 -I. -O3 -DNDEBUG -DUSE_SSE=1 -msse -mfpmath=sse -Wno-unknown-pragmas -I/usr/local/alt-location/include -I/usr/include/libpng16 -I/usr/src/linux-aws-headers-4.4.0-1075/include/linux -fexcess-precision=fast   -c -o pngquant.o pngquant.c
In file included from /usr/include/stdio.h:33:0,
                 from pngquant.c:37:
/usr/src/linux-aws-headers-4.4.0-1075/include/linux/stddef.h:4:31: fatal error: uapi/linux/stddef.h: No such file or directory
compilation terminated.
<builtin>: recipe for target 'pngquant.o' failed
make: *** [pngquant.o] Error 1

Мой вопрос:

Как я могу устранить эту проблему? Это имеет какое-либо отношение к тому, что эта версия Linux на самом деле настраивается aws?

Править

При попытке установить пропущенный заголовок, как предложено, но кажется, что заголовки уже установлены.

sudo apt-get install linux-headers-$(uname -r)
Reading package lists... Done
Building dependency tree
Reading state information... Done
linux-headers-4.4.0-1081-aws is already the newest version (4.4.0-1081.91).
linux-headers-4.4.0-1081-aws set to manually installed.
0 upgraded, 0 newly installed, 0 to remove and 7 not upgraded.
1
задан 13 May 2019 в 13:29

1 ответ

запустите apt-get install libc6-dev, что должно дать вам stddef требуемую библиотеку

Как правило, неплохо бы начать с: sudo apt-get install build-essential, чтобы избежать пропавших библиотек.

Кроме того, если у вас есть недостающая библиотека, вы можете найти пакеты с ними с помощью apt-file:

sudo apt-get install apt-file
apt update
apt-file search stddef.h

, и вы получите информацию, какие пакеты предоставляют файл

0
ответ дан 13 May 2019 в 13:29

Другие вопросы по тегам:

Похожие вопросы: