(Существующие ответы не обращаются к этой конкретной ситуации),
В настоящее время сообщение об ошибке:
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.
запустите 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
, и вы получите информацию, какие пакеты предоставляют файл