Откройтесь результат 'располагаются' с 'vi'

я предложил бы не делать этого. Обычно легче создать двоичные файлы для различных дистрибутивов в рамках процесса создания пакета того дистрибутива. На CentOS, который использовал бы rpmbuild.

, Так как вы имеете дело с VMs, это было бы намного более тривиально, чтобы установить CentOS 7 VM + инструменты сборки и затем сделать конструкцию пакета там.


Наблюдения от Пользователя основанного на источнике Распределения

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

  1. Linux с нуля
  2. хинду
  3. Slackware

и основанное на двоичном файле распределение, которого существует 2 главных:

  1. Debian
  2. Redhat/Fedora

На данный момент, существует только 1 основное гибридное распределение (пересечение источника и двоичного файла):

  1. дуга Linux

, Нравится ли пользователям Linux это или нет, все другие дистрибутивы Linux, является детьми к одному из этих 6 родителей. Так как это сказан, мы идем дальше к следующему вопросу что:

Невозможно Смешать программное обеспечение От основанного на источнике Распределения с программным обеспечением в Двоичном Распределении


Знание, что это также означает, , если вы не знаете то, что вы делаете, вы не должны компилировать единственный пакет из источника на двоичном дистрибутиве . Существуют исключения к этому правилу:

  1. пакет, в котором вы нуждаетесь, не существует в вашем репозитории/дереве/и т.д. дистрибутивов (Это было причиной OP его вопроса).
  2. Вы не можете найти , Более новая версия необходимого пакета в вашем репозитории/дереве/и т.д. - Видит Маркер 9 .

, Почему OP Имеет Выпуск

С технической точки зрения, нет никакого различия в использовании пакета и создании из источника когда дело доходит до заключительного пакета, т.е. если можно создать пакет успешно, и это работает, никто не даст сбой вы для того, чтобы сделать его. Необходимо помнить что, когда вы делаете это, хотя, что инструменты вы раньше создавали ваше приложение на одном основанном на двоичном файле распределении, больше, чем версии инструментов, доступных в другом двоичном распределении. То, что видит OP, является дельтой или изменением, между старыми и новыми пакетами. Дельта или изменение вызываются Пакетом и Специалистами по обслуживанию ОС Каждой ОС,быть этим один из 6 выше, или дети, выбрав, какой пакет они отметят стабильный для их ОС. После того как пакет выбран в Двоичном Распределении, большинство раз он замораживается до следующего выпуска, если Критическая Ошибка не Открыта.

А основанное на источнике Распределение, с другой стороны, может принять решение обновить предметы, как только новые источники доступны, таким образом bugfixing на лету.

Это - То, почему OP Имеет Проблемы

план выпуска, и цикл обновления для Ubuntu принял решение принять новые версии Набор инструментальных средств Сборки , прежде чем CentOS принял их. Так как CentOS основан на устойчивости, Набор инструментальных средств Сборки не может быть обновлен до их следующего главная версия . Как таковой OP испытывал выпуск , подобный этому , потому что Набор инструментальных средств Сборки Ubuntu поддерживает C++ 11, и CentOS делает, только когда все несоответствия версии восстанавливаются и позже столкнутся с проблемами с использованием нескольких Диспетчеров пакетов.

, Что OP Должен был Сделать

  1. Определенный Инструменты Сборки, Доступные для системы, в которой будет находиться Пакет. В этом случае это был бы CentOS. Вот страница о том, как установить их Должным образом . Согласно списку в предыдущей ссылке, тот компилятор поддерживает C++ 11. Как очень опытная догадка несоответствие версии OP происходит или в binutils или в libtool Binutils зависит от glibc, и libtool зависит от binutils, поэтому , libtool косвенно зависит от glibc, который я не объясню, почему почти каждый пакет в любой системе косвенно зависит от , glibc просто знает, что делает.
  2. , Если бы Набор инструментальных средств Сборки, после надлежащей установки, не поддерживал C++ 11, OP был бы вынужден использовать C++ 98 для облегчения проблемы, с которой он сталкивается теперь.
  3. обновлявший Набор инструментальных средств Сборки на Шаге 1 выше, OP должен теперь скомпилировать его исходный код в CentOS VM и восстановить/устранить по мере необходимости. Если OP требует пакета, он должен использовать rpmbuild, как это сообщение предполагает, поскольку это - собственный диспетчер пакетов к VM, где пакет находится. Конфетка НЕ является диспетчером пакетов. Конфетка ЯВЛЯЕТСЯ Сопоставителем Зависимости

Ссылки

  1. Список дистрибутивов Linux
  2. C++ 0x/C ++ 11 Поддержки в новостях GCC
  3. , Состоянии и Дискуссии о Стандарте C++

0
12.03.2015, 13:15
1 ответ

, поскольку ядро 3.3

Вы Можно Теперь Получите эту информацию со SS :

# ss -xp

Теперь вы можете увидеть в Peer столбец ID (номер INODE ) который соответствует другому идентификатору в колонке столбца . Соответствующие идентификаторы - два конца розетки.

Примечание. Опция Unix_diag должна быть включена в вашем ядре.

Перед ядром 3.3

Linux не подвергалась этой информации в пользовательскую информацию.

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

Примечание. Этот ответ делает это с помощью GDB , однако, см. @ STÉPHANECHAZELAS 'Ответ , который более разработан в этом отношении.

# lsof | grep whatever
mysqld 14450 (...) unix 0xffff8801011e8280 (...) /var/run/mysqld/mysqld.sock
mysqld 14450 (...) unix 0xffff8801011e9600 (...) /var/run/mysqld/mysqld.sock

Существует 2 разных розетка, 1 прослушивание и 1 установлено. Номер Hexa - это адрес для соответствующего ядра структуры Unix_Sock , имеющий атрибут , являющийся адресом другой конец розетки (также Экземпляр структуры Unix_Sock ).

Теперь мы можем использовать GDB , чтобы найти Peer в памяти ядра:

# gdb /usr/lib/debug/boot/vmlinux-3.2.0-4-amd64 /proc/kcore
(gdb) print ((struct unix_sock*)0xffff8801011e9600)->peer
$1 = (struct sock *) 0xffff880171f078c0

# lsof | grep 0xffff880171f078c0
mysql 14815 (...) unix 0xffff880171f078c0 (...) socket

Здесь вы идете, другой конец сокета удерживается MySQL , PID 14815.

Ваше ядро ​​должно быть составлено KCORE_ для использования / proc / kcore . Кроме того, вам нужна версия изображения вашего ядра с отладки символов. На Debian 7 APT-Get-Get Install Install Linux-Image-3.2.0-4-AMD64-DBG предоставит этот файл.

Нет необходимости для отладочного ядра ...

Если у вас нет (или не хочу сохранять) отладочный образ ядра в системе, вы можете дать GDB Смещение памяти для «вручную» получить доступ к Value значение . Это значение смещения обычно отличается версией или архитектурой ядра.

На моем ядре я знаю, что смещение составляет 680 байтов, в 85 раз 64 бит. Так что я могу сделать:

# gdb /boot/vmlinux-3.2.0-4-amd64 /proc/kcore
(gdb) print ((void**)0xffff8801011e9600)[85]
$1 = (void *) 0xffff880171f078c0

Вуаля, тот же результат, что и выше.

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

Чтобы сначала (легко) Откройте для себя это значение смещения сначала, вам нужна Image Debug:

$ pahole -C unix_sock /usr/lib/debug/boot/vmlinux-3.2.0-4-amd64
struct unix_sock {
  (...)
  struct sock *              peer;                 /*   680     8 */
  (...)
}

Здесь вы идете, 680 байтов, это 85 х 64 бит или 170 х 32 бита.

Большая часть кредита за этот ответ имеет значение MVG .

-121--7539-

Вам нужен шаблон для нахождения ; Скажи "my.cnf":

vi $( locate my.cnf | head -n3 | tail -n1 )

Предостережение: Никаких Ньюлайн в именах файлов, пожалуйста. :)

2
28.01.2020, 02:36

Теги

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