Я пытаюсь скомпилировать strace 4.19 на 64-разрядном Kubuntu 14.04 и сбои компиляции со следующей ошибкой:
/usr/include/linux/errno.h:1:23: fatal error: asm/errno.h: No such file or directory
Я смог воспроизвести проблему к той из компиляции теста C источником:
#include <errno.h>
Это компилирует прекрасный с -m32
и -m64
Опции GCC, но сбои с ошибкой, упомянутой выше для -mx32
:
$ gcc -c -x c -mx32 - <<< '#include <errno.h>'
In file included from /usr/include/bits/errno.h:24:0,
from /usr/include/errno.h:35,
from <stdin>:1:
/usr/include/linux/errno.h:1:23: fatal error: asm/errno.h: No such file or directory
compilation terminated.
Я предполагаю, что пропускаю некоторый пакет, который действительно обеспечивает asm/errno.h
для x32 ABI. Каков этот пакет?
Другой вопрос, который я просмотрел, не решает это: я попробовал то, что принятый ответ, предложенный, и это не изменило ничего вообще. Кроме того, это даже не применимо к чистому GCC ни без какой сборки автоинструментов. И другой ответ является просто грязным взломом, который я не знаю, как повредит сборку strace. Кроме того, то, что другой вопрос не упоминает x32, который является ядром этого вопроса.
Разрешить эту поддержку проблемы x32 ABI в gcc должно быть включено.
пакет gcc-мультиlib обеспечит это через/usr/include/linux/asm символьную ссылку. Для ссылки это было замечено в debian ошибке, где вышеупомянутая информация была обеспечена. https://bugs.debian.org/cgi-bin/bugreport.cgi? bug=871946