Linux usr include bits

/usr/include/x86_64-linux-gnu/bits/string_fortified.h:106:10: error: ‘__builtin_strncpy’ specified bound 16 equals destination size [-Werror=stringop-truncation] #167

Comments

Marietto2008 commented Aug 17, 2020 •

I’m trying to Build Qemu & Xen for XenGT on Ubuntu 20.04. My hardware are :

00:02.0 VGA compatible controller: Intel Corporation UHD Graphics 630 (Desktop 9 Series) (rev 02) ;

01:00.0 VGA compatible controller: NVIDIA Corporation TU102 [GeForce RTX 2080 Ti] (rev a1)
01:00.1 Audio device: NVIDIA Corporation TU102 High Definition Audio Controller (rev a1)
01:00.2 USB controller: NVIDIA Corporation TU102 USB 3.1 Host Controller (rev a1)
01:00.3 Serial bus controller [0c80]: NVIDIA Corporation TU102 USB Type-C UCSI Controller (rev a1)

I have reached this point :

root@ziomario-z390aoruspro:/etc/xen/igvtg-xen# make install-tools

.
make libs
make[5]: ingresso nella directory «/etc/xen/igvtg-xen/tools/libxc»
rm -f _paths.h.tmp; echo «#define sbindir «/usr/sbin»» >>_paths.h.tmp; echo «#define bindir «/usr/bin»» >>_paths.h.tmp; echo «#define LIBEXEC «/usr/lib/xen»» >>_paths.h.tmp; echo «#define LIBEXEC_BIN «/usr/lib/xen/bin»» >>_paths.h.tmp; echo «#define libdir «/usr/lib»» >>_paths.h.tmp; echo «#define SHAREDIR «/usr/share»» >>_paths.h.tmp; echo «#define XENFIRMWAREDIR «/usr/lib/xen/boot»» >>_paths.h.tmp; echo «#define XEN_CONFIG_DIR «/etc/xen»» >>_paths.h.tmp; echo «#define XEN_SCRIPT_DIR «/etc/xen/scripts»» >>_paths.h.tmp; echo «#define XEN_LOCK_DIR «/var/lock»» >>_paths.h.tmp; echo «#define XEN_RUN_DIR «/var/run/xen»» >>_paths.h.tmp; echo «#define XEN_PAGING_DIR «/var/lib/xen/xenpaging»» >>_paths.h.tmp; echo «#define XEN_DUMP_DIR «/var/lib/xen/dump»» >>_paths.h.tmp; echo «#define XEN_LOG_DIR «/var/log/xen»» >>_paths.h.tmp; echo «#define XEN_LIB_DIR «/var/lib/xen»» >>_paths.h.tmp; echo «#define XEN_RUN_STORED «/var/run/xenstored»» >>_paths.h.tmp; if ! cmp -s _paths.h.tmp paths.h; then mv -f paths.h.tmp paths.h; else rm -f paths.h.tmp; fi
gcc -m64 -DBUILD_ID -fno-strict-aliasing -std=gnu99 -Wall -Wstrict-prototypes -Wdeclaration-after-statement -Wno-unused-but-set-variable -Wno-unused-local-typedefs -O2 -fomit-frame-pointer -D__XEN_INTERFACE_VERSION
=XEN_LATEST_INTERFACE_VERSION -MMD -MF .xc_pm.o.d -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_GNU_SOURCE -I../../xen/common/libelf -Werror -Wmissing-prototypes -I. -I./include -I/etc/xen/igvtg-xen/tools/libxc/../../tools/include -D__XEN_TOOLS
-pthread -I/etc/xen/igvtg-xen/tools/libxc/../../tools/libs/toollog/include -I/etc/xen/igvtg-xen/tools/libxc/../../tools/include -I/etc/xen/igvtg-xen/tools/libxc/../../tools/libs/evtchn/include -I/etc/xen/igvtg-xen/tools/libxc/../../tools/include -I/etc/xen/igvtg-xen/tools/libxc/../../tools/libs/devicemodel/include -I/etc/xen/igvtg-xen/tools/libxc/../../tools/include -include /etc/xen/igvtg-xen/tools/libxc/../../tools/config.h -I/etc/xen/igvtg-xen/tools/libxc/../../tools/libs/call/include -I/etc/xen/igvtg-xen/tools/libxc/../../tools/include -I/etc/xen/igvtg-xen/tools/libxc/../../tools/libs/foreignmemory/include -I/etc/xen/igvtg-xen/tools/libxc/../../tools/include -I/etc/xen/igvtg-xen/tools/libxc/../../tools/libs/gnttab/include -I/etc/xen/igvtg-xen/tools/libxc/../../tools/include -c -o xc_pm.o xc_pm.c
In file included from /usr/include/string.h:495,
from xc_private.h:24,
from xc_pm.c:22:
In function ‘strncpy’,
inlined from ‘xc_set_cpufreq_gov’ at xc_pm.c:308:5:
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:106:10: error: ‘__builtin_strncpy’ specified bound 16 equals destination size [-Werror=stringop-truncation]
106 | return __builtin___strncpy_chk (__dest, __src, __len, __bos (__dest));
| ^

cc1: all warnings being treated as errors
make[5]: *** [/etc/xen/igvtg-xen/tools/libxc/../../tools/Rules.mk:222: xc_pm.o] Errore 1
make[5]: uscita dalla directory «/etc/xen/igvtg-xen/tools/libxc»
make[4]: *** [Makefile:184: build] Errore 2
make[4]: uscita dalla directory «/etc/xen/igvtg-xen/tools/libxc»
make[3]: *** [/etc/xen/igvtg-xen/tools/../tools/Rules.mk:246: subdir-install-libxc] Errore 2
make[3]: uscita dalla directory «/etc/xen/igvtg-xen/tools»
make[2]: *** [/etc/xen/igvtg-xen/tools/../tools/Rules.mk:241: subdirs-install] Errore 2
make[2]: uscita dalla directory «/etc/xen/igvtg-xen/tools»
make[1]: *** [Makefile:74: install] Errore 2
make[1]: uscita dalla directory «/etc/xen/igvtg-xen/tools»
make: *** [Makefile:127: install-tools] Errore 2

Читайте также:  Windows 10 2004 known issues

how can I fix this bug ?

The text was updated successfully, but these errors were encountered:

Источник

Отсутствует включить » bits/c++config.h » при кросс-компиляции 64-битной программы на 32 бит в Ubuntu

я запускаю 32-битную версию Ubuntu 10.10 и пытаюсь скомпилировать до 64-битной цели. Основываясь на моих исследованиях, я установил пакет G++-multilib.

программа представляет собой очень простой hello world:

я нашел но они находятся под i486-linux-gnu и i686-linux-gnu каталоги /usr/include/c++/4.4/ нет c++config.h на /usr/include/c++/bits .

любой идеи о том, чего мне не хватает? Компиляция без -m64 флаг работает нормально (a.out создается и запускается правильно).

редактировать благодаря подсказке от @nightcracker я сделал немного больше исследований в структуре включения на 32 и 64-битных системах. Я добавил ответ ниже, что» исправляет » проблему временно, но я думаю, что она сломается при следующем обновлении. В принципе, мне не хватает каталога под названием /usr/include/c++/4.4/i686-linux-gnu/64 это должно содержать подкаталог называется bits у которого отсутствует файл include. Есть идеи, какой пакет должен позаботиться об этом?

7 ответов

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

я смог исправить это, сделав следующее:

если вы установили версию gcc / g++ это не поставляется по умолчанию (например, g++-4.8 on lucid) вы также захотите соответствовать версии:

вы пытались добавить -I/usr/include/c++/4.4/i486-linux-gnu или -I/usr/include/c++/4.4/i686-linux-gnu ?

во время компиляции в RHEL 6.2( x86_64) я установил пакеты 32bit и 64bit libstdc++-dev, но у меня был «конфигурация c++.h нет такого файла или каталога проблемы».

каталог /usr/include/c++/4.4.6/x86_64-redhat-linux отсутствует.

Я сделал следующее:

теперь я могу компилировать 32-битные двоичные файлы на 64-битной ОС.

Кажется ошибкой опечатки в этом пакете gcc. Решение:

в моей 64-битной системе я заметил, что существует следующий каталог:

тогда имело бы смысл, что на моей 32-битной системе, которая была настроена для 64-битной кросс-компиляции, должен быть соответствующий каталог, такой как:

Я проверил и этот каталог не существует. Бег!—3—> с параметром verbose показал, что компилятор действительно искал что-то в этом месте:

ошибка связи the ignoring nonexistent directory была подсказка. К сожалению, я до сих пор не знаю, какой пакет нужно установить, чтобы этот каталог, т. е. я просто скопировал /usr/include/c++/4.4/x86_64-linux-gnu/bits каталог с моей 64-битной машины на /usr/include/c++/4.4/i686-linux-gnu/64/bits на моей машине 32.

теперь компиляция с -m64 работает правильно. Основным недостатком является то, что это все еще не правильный способ делать вещи, и я предполагаю, что в следующий раз Update Manager устанавливает и обновляет G++.

эта ошибка исправлена в «gcc-4.6».

64-разрядные биты c++config.h файл есть в 32-битных системах и наоборот. Установите g++-multilib пакет, поэтому вы можете легко установить его на терминал с помощью команды:

Источник

Сборка ядра

Нужна была русская документация по тому, как настраивать и собирать ядро в Linux.
Походил по инету и одна из первых вещей, которая попалась мне на глаза > «Настройка Linux (Slackware)» http://www.astro.spbu.ru/staff/dio/Linux/linux-handbook-5.html

Читайте также:  Установку ролей сервера windows server

Сделал, как там написано. У меня раньше все отлично собиралось, но тут удивился, что нужно что-то линковать, но сделал, как человек писал.

затем, попытался выполнить «make menuconfig» и увидел, что системе пипец:

make menuconfig
HOSTCC scripts/kconfig/mconf.o
In file included from /usr/include/asm/ioctls.h:4,
from /usr/include/bits/ioctls.h:24,
from /usr/include/sys/ioctl.h:27,
from scripts/kconfig/mconf.c:11:
/usr/include/asm/ioctl.h:1:31: asm-generic/ioctl.h: No such file or directory
In file included from /usr/include/linux/errno.h:4,
from /usr/include/bits/errno.h:25,
from /usr/include/errno.h:36,
from scripts/kconfig/mconf.c:14:
/usr/include/asm/errno.h:4:31: asm-generic/errno.h: No such file or directory
make[1]: *** [scripts/kconfig/mconf.o] Ошибка 1
make: *** [menuconfig] Ошибка 2

OS — Linux Slackware
исходники ядра 2.6.18.6
до этой доки, их же собирал и все было ок, за исключением диких тормозов.
По остальным докам, в инете, вообще, один обобщенные советы.

Как восстановить систему? Что нужно поправить? Где взять человеческую подробную документацию, по настройке ядра?

Пожалуйста, прошу помочь.

Re: Сборка ядра

kernel-headers стоят? что за дистрибутив?

Re: Сборка ядра

тьфу. ось увидел 🙂 kernel-headers стоят?

Re: Сборка ядра

Вообще-то, точно помню, что стояли.

переустановил. reinstall installpkg не прокатила. Ответ был, что уже стоит пакет. переустановил, в общем.

В общем, как я понял, та дока не при чем. Попробую заново ею воспользоваться, коли вопрос был лишь про то, стоят или не стоят kernel-headersю

Re: Сборка ядра

ln -sf /usr/src/linux- /usr/src/linux
ln -sf /usr/src/linux/include/linux /usr/include/linux
ln -sf /usr/src/linux/include/asm /usr/include/asm
ln -sf /usr/src/linux/include/asm-generic /usr/include/asm-generic

cd /usr/src/linux- /include
ln -sf asm-i386 asm

и можешь kernel-headers не устанавливать

Re: Сборка ядра

Хедеры ядра ДОЛЖНЫ стоять те, с которыми собраны glibc.

Re: Сборка ядра

У кого есть линки на хорошую документацию по настройке самого ядра?

Не по сборке, а по настройке. стадия make menuconfig

Re: Сборка ядра

Система тормозит жутко. дело не в udma. проц не сильно занят

2 гига оперативы, но тормоза на i/o. Тяжело идут параллельные операции.

Хотелось бы легуости работы, как в win 6.0, когда копируешь с десяток гигатонн данных и параллельно спокойно и непринужденно есть возможность открыть любое приложение, без задержек.

еще проблема. В Gimp открыл одну фотку и ошибся при ресазинге на два значка. Память мгновенно стала полностью занятой и пошло дикое свопирование. свопинг шел около получаса. ctrl+alt+f2 не помог. отзыва не было. лишь шуршание свопа и все. лишь, когда все же довался до tty2 и убил Gimp — все нормализовалось. но ушло минут 40 на все про все.

как бороться с этим?

Re: Сборка ядра

ulimit можно покрутить, наапример.

Re: Сборка ядра

на что ориентироваться.. можно пример?

Re: Сборка ядра

Re: Сборка ядра

> Хедеры ядра ДОЛЖНЫ стоять те, с которыми собраны glibc.

У меня не установлен пакет с заголовками, стоят те линки, которые я написал, ядро ванильное, последнее, glibc из slackware-current (очевидно компилились под 2.4). Все работает, все компилится.

Где возможны траблы?

Re: Сборка ядра

-d The maximum size of a process’s data segment. -s The maximum stack size. -t The maximum amount of cpu time in seconds. -v The maximum amount of virtual memory available to the process.

Читайте также:  Где хранится предыдущая версия windows

Re: Сборка ядра

ядро. В итоге, вообще ппц. пишу из konqueror. Если жму backspace, то приходится ждать с секунд 20 отзыва. при чем, проц не нагружается.

та дока старенькая уже. 3 года почти прошло. многое добавлено.

плюс проблемы с i/o не исчезли. все те же тормоза при параллельных операциях

Re: Сборка ядра

это все понятно..

ориентироваться на что? пример. не ключи блин. как объяснить-то.. 😉

а.. ладно. Ты меня не поймешь. Я тебя..

Честно. Я за все 5 лет ни разу манов не понимал, пока примера не видел. Потом — да. Очень полезная штука.

Re: Сборка ядра

Почитай ядерную рассылку. Актуальные хедеры(текущего ядра) используются только для сборки ядерных модулей(а эти хедеры находятся в исходниках ядра и прекрасно подцепляются для сборки). Для всех остальных случаев в системе ДОЛЖНЫ стоять те хедеры, с которыми собраны glibc. Точка.

P.S. wine давно собирал? Он с версии 0.9.20 чтоли не собирался с актуальными ядерными хедерами, ругался на ошибку в joystick.h. Не знаю, вроде сейчас пофиксили.

Re: Сборка ядра

почитаю обязательно, но я пока что ни с какими проблемами не сталкивался wine собирал и 0.9.29 и 0.9.30 без проблем.

Re: Сборка ядра

Re: Сборка ядра

> В чем проблема? Какие packages? Какие headers?
Если у тебя в /usr/include/asm, /usr/include/asm-generic, /usr/include/linux не будет соответствующих заголовочных файлов, то у тебя даже make menuconfig не пройдет. Файлы, которые там лежат, входят в состав пакета kernal-headers

Re: Сборка ядра

>Хотелось бы легуости работы, как в win 6.0, когда копируешь с десяток гигатонн данных и параллельно спокойно и непринужденно есть возможность открыть любое приложение, без задержек.

в винда автоматом увеличивает приоритет приложения, окно которого в настоящий момент в фокусе + в виндовом ядре есть штуковина, которая называется realtime preemtion (грубо говоря, это когда процесс имеющий более высокий приоритет может отобрать квант у процесса с более низким приоритетом, даже тогда, когда второй в данный момент работает в kernel mode. в результате очень сильно повышается скорость реакции системы и следовательно интерактивность естественно в ущерб общей производительности [например значительно увеличивается количество переключений контекста]). в линаксе realtime preemtion еще в нерабочем состоянии и потому не включена в майнстрим. однако в линаксе есть preemption — хотя и не realtime — т.е. многие операции процесса, работеющего в данный момент kernel mode (в основном i/o) непрерываемы. таким образом, чтобы немного сгладить проблему тормозов (точнее это проблема интерактивности) можно пересобрать ядро с Preemption Model = Preemptible kernel (Low-Latency Desktop) ( в секции Processor type and features ) и Timer frequency — 1000Hz.

можно конечно выкачать патчи (realtime preemtion) Ingo Molnar-а и собрать ядро с ними, однако по моему мнению — это нездоровое занятие.

Источник

Оцените статью