С linux заголовочный файл

Содержание
  1. Установка Linux-2.4.19
  2. Установка заголовочных файлов ядра
  3. Пояснения команд
  4. Почему мы копируем заголовки ядра, а не создаем для них символические ссылки?
  5. Содержимое Linux
  6. Файлы поддержки
  7. Описания
  8. Ядро Linux
  9. linux kernel headers
  10. Зависимости Linux
  11. Как установить заголовочные файлы ядра в Linux
  12. Установка заголовочных файлов ядра в Debian, Ubuntu или Linux Mint
  13. Установка заголовочных файлов ядра в Fedora, CentOS или RHEL
  14. 5.2. Заголовочные файлы
  15. Читайте также
  16. Приложение A Заголовочные файлы
  17. Файлы
  18. Пересылаем файлы
  19. 1.4.2. Файлы устройств
  20. CPL-файлы
  21. SCF-файлы
  22. DBX-файлы
  23. INF-файлы
  24. 23. Делайте заголовочные файлы самодостаточными
  25. 10.1. Файлы и каталоги
  26. Исходные файлы и выполняемые файлы
  27. 4.3. Файлы
  28. 4.3 Заголовочные Файлы
  29. Файлы
  30. Русские Блоги
  31. Путь поиска для заголовочных файлов и библиотек Linux
  32. 1.1 В какую папку устанавливаются библиотечные файлы .so и заголовочные файлы .h при установке glibc, как gcc может правильно найти соответствующие папки?
  33. 1.2 Каковы пути поиска библиотеки ссылок, когда программа связана?
  34. 1.3 Когда программа работает, каковы пути поиска в библиотеке динамических ссылок?
  35. 1.4. Каковы пути поиска заголовочных файлов при компиляции программы?
  36. 1.5. При настройке кросс-компилятора, каковы конфигурации пути поиска?
  37. 2. Пример операции
  38. 2.1, путь поиска библиотеки при связывании
  39. 2.2, место поиска библиотеки динамической загрузки во время выполнения
  40. 2.3 Каковы пути поиска заголовочных файлов при компиляции программы?

Установка Linux-2.4.19

Установка заголовочных файлов ядра

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

Скопируем заголовки ядра, выполнив следующие команды:

Пояснения команд

ln -s /static/bin/pwd /bin/pwd: В исходных кодах ядра путь к программе pwd прописан как /bin/pwd, поэтому создадим временную символическую ссылку, а в конце удалим ее.

make mrproper: Выполнение данной команды обеспечивает чистое дерево исходников ядра. Команда разработчиков ядра рекомендует выполнять эту команду перед каждой компиляцией ядра, даже если вы только что распаковали исходные коды из tar-архива.

make include/linux/version.h и make symlinks: Создадим файл include/linux/version.h file и символическую ссылку include/asm для конкретной платформы.

mkdir /usr/include/asm , cp include/asm/* /usr/include/asm и cp -R include/asm-generic /usr/include: Эти команды копируют заголовочные файлы ядра ассемблера для конкретной платформы в /usr/include/asm и /usr/include/asm-generic.

cp -R include/linux /usr/include: Эта команда копирует кросс-платформенные файлы заголовков в /usr/include.

touch /usr/include/linux/autoconf.h: Создаем пустой файл autoconf.h. Так как на данном этапе мы не конфигурируем ядро, необходимо вручную создать этот файл для некоторых заголовочных файлов ядра, использующих его, чтобы избежать ошибок при компиляции.

Почему мы копируем заголовки ядра, а не создаем для них символические ссылки?

Раньше было принято создавать символические ссылки директорий /usr/include/ на /usr/src/linux/include/ . Однако, это была плохая идея, как объясняет Линус Торвальдс в списке рассылки ядра Linux (Linux Kernel Mailing List, отрывок):

Наиболее важная часть сообщения Линуса заключается в том, что файлы заголовков должны быть именно теми, с которыми компилировался пакет glibc. Это те заголовки, которые следует использовать в будущем при компиляции других пакетов, т.к. именно они соответствуют файлам библиотек объектного кода. Копируя заголовки, мы удостоверяемся, что они останутся доступными, если позже мы решим обновить ядро.

Заметьте, что нет ничего страшного в том, что исходные коды ядра находятся в директории /usr/src/linux. Главное, чтобы у вас не было символических ссылок /usr/include/ .

Содержимое Linux

Последняя проверка: версия 2.4.18.

Файлы поддержки

Ядро Linuxи и его заголовочные файлы

Описания

Ядро Linux

Ядро — основа любой системы Linux. Когда компьютер включается и загружает Linux, первое, что загружается — ядро. Ядро инициализирует аппаратные компоненты системы: последовательные и параллельные порты, звуковые и сетевые карты, контроллеры IDE и SCSI и многое другое. In a nutshell the kernel makes the hardware available so that the software can run.

linux kernel headers

Это файлы, которые мы копируем в /usr/include/ в 5-й главе. Они должны соответствовать тем, с которым был скомпилирован glibc, и поэтому не должны быть заменены при смене ядра. Они имеют ключевое значение для компиляции многих программ.

Зависимости Linux

Последняя проверка: версия 2.4.17.

Bash: sh
Binutils: ar, as, ld, nm, objcopy
Fileutils: cp, ln, mkdir, mv, rm, touch
Findutils: find, xargs
Gcc: cc1, collect2, cpp0, gcc
Grep: grep
Gzip: gzip
Make: make
Gawk: awk
Modutils: depmod, genksyms
Net-tools: dnsdomainname, hostname
Sed: sed
Sh-utils: basename, date, expr, pwd, stty, uname, whoami, yes
Textutils: cat, md5sum, sort, tail

Читайте также:  Pdanet для компьютера windows

Источник

Как установить заголовочные файлы ядра в Linux

Когда вы компилируете драйвер устройства как модуль ядра, вам необходимы установленные заголовочные файлы ядра. Также они требуются, если вы собираете пользовательское приложение, которое взаимодействует напрямую с ядром. При установке заголовочных файлов ядра, необходимо убедиться, что их версия совпадает с версией ядра установленного в системе.

Если версия вашего ядра не менялась после установки дистрибутива, или вы обновляли его с использованием системного менеджера пакетов (то есть apt-get, aptitude или yum) из системных репозиториев, то заголовочные файлы вы также можете установить с помощью пакетного менеджера. Однако если вы скачивали исходный код ядра и компилировали его самостоятельно, то заголовочные файлы необходимо устанавливать с помощью команды make.

Здесь мы предполагаем, что ваше ядро установлено из основного системного репозитория вашего дистрибутива, и вы хотите установить соответствующие заголовочные файлы ядра.

Установка заголовочных файлов ядра в Debian, Ubuntu или Linux Mint

Если вы не компилировали ядро вручную, то можете установить соответствующие заголовочные файлы ядра с помощью команды apt-get.
Сначала проверьте, не установлены ли уже требуемые заголовочные файлы с помощью команды:

Теперь установите заголовочные файлы, как показано ниже.

Проверьте, что установка прошла успешно.

По умолчанию в Debian, Ubuntu или Linux Mint заголовочные файлы находятся в /usr/src.

Установка заголовочных файлов ядра в Fedora, CentOS или RHEL

Если вы не обновляли ядро вручную, то можете установить соответствующие заголовочные файлы ядра с помощью команды yum.
Сначала проверьте, не установлены ли уже требуемые заголовочные файлы. По умолчанию заголовочные файлы ядра расположены в /usr/src/kernels/.
Если подходящих заголовочных файлов не установлено, вы можете установить их с помощью команды yum. Она автоматически найдет подходящий пакет.

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

Теперь проверьте, что установлены заголовочные файлы соответствующей версии с помощью команды:

Источник

5.2. Заголовочные файлы

5.2. Заголовочные файлы

Время от времени вы можете застать себя на том, что просматриваете заголовочные файлы Linux. Скорее всего, вы найдете рад конструкций, не совместимых со стандартом ANSI/ISO. Некоторые из них стоят того, чтобы в них разобраться. Все конструкции, рассматриваемые в этой книге, более подробно изложены в документации по gcc.

Читайте также

Приложение A Заголовочные файлы

Приложение A Заголовочные файлы В этом приложении показаны все локальные заголовочные файлы для исходного кода, рассмотренного в книге.1: /* libhello.h */2:3: #ifndef LIBHELLO_H_4: #define LIBHELLO_H_5:6: void print_hello(void);7:8: #endif /* LIBHELLO_H_ */1: /* ptypair.h */2:3: #ifndef _PTYPAIR_H4: #define _PTYPAIR_H5: int get_master_pty(char **name);6: int get_slave_pty(char

Файлы

Файлы По многочисленным просьбам открываем раздел с полезными файлами для W2k. Раздел состоит из двух частей, первая официальные патчи от Microsoft (не все, а только те, что кажутся нам наиболее важными), и вторая часть, куда войдут все файлы упоминавшиеся в FAQ, просто утилитки,

Пересылаем файлы

Пересылаем файлы Чтобы отправить любой файл (в том числе и фотографию) в интерактивном режиме, нужно:1. Воспользоваться командой Файл | Отправить файл или фото.2. На экране откроется диалоговое окно, в котором нужно будет выбрать файл на вашем компьютере и нажать кнопку

1.4.2. Файлы устройств

1.4.2. Файлы устройств Абстракция — это великая сила. Возьмем, например, DOS (именно DOS, потому что с нее началась история Microsoft). Разные разделы жесткого диска в DOS представляются как отдельные диски (в DOS они называются логическими дисками), В Windows то же самое — открываем окно Мой

CPL-файлы

CPL-файлы Из нескольких предыдущих абзацев вы узнали практически все теоретические выкладки, которые необходимы для работы с программой rundll32.exe. Сейчас же будут перечислены те возможности, которые данная программа может предоставить пользователю. Начнем с описания

SCF-файлы

SCF-файлы Файлы с таким расширением являются командными файлами оболочки Windows и используются для различных целей. Например, можно создать файл, который будет сворачивать все окна. Его содержимое приведено в листинге 17.3. Если ввести подобный текст в текстовый файл, а потом

DBX-файлы

DBX-файлы В файлах с расширением DBX хранятся записи программы Outlook Express. В этих файлах, называемых Банком сообщений, находятся письма, сообщения новостных групп и т.п. При желании, можно скопировать эти файлы на носитель информации для переноса данных в другой компьютер.

INF-файлы

INF-файлы В данной статье мы рассмотрим, что представляет собой INF-файл, как с его помощью работать с другими файлами и реестром, создавать ярлыки, запускать программы и т.д.Как известно, для более-менее серьезного программного продукта обычно требуется специальная

Читайте также:  Очистить папку winsxs windows server 2012

23. Делайте заголовочные файлы самодостаточными

23. Делайте заголовочные файлы самодостаточными РезюмеУбедитесь, что каждый написанный вами заголовочный файл компилируем самостоятельно, т.е. что он включает все заголовочные файлы, от которых зависит его содержимое.ОбсуждениеЕсли один заголовочный файл не работает,

10.1. Файлы и каталоги

10.1. Файлы и каталоги Под файлом мы обычно, хотя и не всегда, понимаем файл на диске. Концепция файла в Ruby, как и в других языках, — это полезная абстракция. Говоря «каталог», мы подразумеваем каталог или папку в смысле, принятом в UNIX и Windows.Класс File тесно связан с классом IO,

Исходные файлы и выполняемые файлы

Исходные файлы и выполняемые файлы Наша замечательная программа, несмотря на свою лаконичность и простоту, для компьютера является совершенно бессмысленным набором символов, так как он «не понимает» директив типа #include или printf. Он понимает только специальный язык,

4.3. Файлы

4.3. Файлы В завершение главы рассмотрим три несложных примера работы с файлами: копирование файла (с отображением хода копирования в ProgressBar), определение значков, ассоциированных с файлами, и извлечение значков из ЕХЕ– и DLL-файлов.Красивое копирование файлаКазалось бы,

4.3 Заголовочные Файлы

4.3 Заголовочные Файлы Типы во всех описаниях одного и того же объекта должны быть согласованными. Один из способов это достичь мог бы сотоять в обеспечении средств проверки типов в компоновщике, но большинство компоновщиков – образца 1950-х, и их нельзя измнить по

Файлы

Файлы Файлы – одно из фундаментальных понятий в компьютерной технологии и программировании. Но поскольку данная книга рассчитана на пользователей компьютера, я не буду давать точного определения файла, дабы не запутать вас и не запутаться самому.Если после прочтения

Источник

Русские Блоги

Путь поиска для заголовочных файлов и библиотек Linux

Эта статья перенесена с: https://blog.csdn.net/pwl999/article/details/78219374

1.1 В какую папку устанавливаются библиотечные файлы .so и заголовочные файлы .h при установке glibc, как gcc может правильно найти соответствующие папки?

Когда мы устанавливаем –prefix = / path / при сборке gcc, gcc устанавливается в / path /. По умолчанию gcc будет искать библиотеки в / path / lib / и искать файлы заголовков в / path / include /.
Например, в обычных системах Linux и gcc, и glibc установлены в каталоге / usr /, поэтому исполняемый файл gcc находится в каталоге / usr / bin, а файл библиотеки glibc находится в / usr / lib В этом каталоге файл заголовка glibc находится в каталоге / usr / include.
Разумеется, указанное выше соотношение не является точным и может быть указано вручную при установке gcc и glibc. Вы можете использовать команду «gcc -print-search-dirs» для просмотра пути поиска библиотеки gcc:

Вы можете использовать следующие методы, чтобы изменить путь к библиотеке и файлу заголовка, который gcc ищет по умолчанию:

  • (1) Используйте «gcc -nostdlib -Lusrlibpath», чтобы изменить путь поиска библиотеки по умолчанию для gcc, и используйте «gcc -nostdinc -Iusrincpath», чтобы изменить путь поиска заголовка по умолчанию для gcc.
  • (2) Используйте «gcc -Wl, -sysroot =», чтобы изменить путь поиска библиотеки по умолчанию для gcc.
  • (3) Измените файл спецификации gcc, чтобы настроить любые параметры gcc.

Спецификации — это файлы конфигурации gcc. Этот метод модификации является самым мощным, но он также является самым сложным и рискованным, поскольку файл спецификации gcc неясен и труден для понимания. Пока я не буду изменять его, но сначала я расскажу о существовании этого метода.
Используйте команду «gcc -v», чтобы просмотреть путь к спецификациям gcc:

В некоторых установках gcc используются встроенные спецификации, но нет внешних файлов спецификаций:

Для встроенной спецификации вы можете использовать команду «gcc -dumpspecs» для просмотра содержимого конкретной спецификации:

Вы также можете использовать «gcc -specs =», чтобы указать файл спецификации gcc.

  • (4) Передается ли конфигурация gcc по умолчанию командой configure во время сборки?

Используйте команду «gcc -v» для просмотра значения конфигурации gcc. Параметры конфигурации описаны в файле gcc-4.1.0 \ gcc \ doc \ install.texi.

1.2 Каковы пути поиска библиотеки ссылок, когда программа связана?

При связывании конфигурация пути поиска библиотеки имеет следующие методы: (Для конкретного использования, пожалуйста, обратитесь к описанию в главе примера)

  • (1) Используйте «gcc -Llibpath -llibname», чтобы указать путь поиска библиотеки ссылок.
  • (2) Используйте переменную среды «LIBRARY_PATH», чтобы указать путь поиска библиотеки ссылок.
  • (3) Используйте «SEARCH_DIR» в сценарии подключения ld, чтобы указать путь поиска библиотеки ссылок.

1.3 Когда программа работает, каковы пути поиска в библиотеке динамических ссылок?

При связывании конфигурация пути поиска библиотеки имеет следующие методы: (Для конкретного использования, пожалуйста, обратитесь к описанию в главе примера)

  • (1) При компиляции используйте «gcc -Wl, -rpath», чтобы указать путь поиска библиотеки динамических ссылок во время выполнения, и жестко запишите его в опцию «RPATH» файла ELF.
  • (2) Переменная среды «LD_RUN_PATH» используется для указания пути поиска библиотеки динамических ссылок во время компиляции, и она жестко задана в опции «RPATH» файла ELF.
  • (3) Используйте переменную среды «LD_LIBRARY_PATH», чтобы указать путь поиска библиотеки динамических ссылок во время выполнения.
  • (4) Используйте файл конфигурации «/etc/ld.so.conf», чтобы указать путь поиска библиотеки динамических ссылок во время выполнения.
  • (5) Используйте путь поиска по умолчанию «/ lib, / usr / lib» библиотеки динамических ссылок во время выполнения.
Читайте также:  Linux task manager like windows

1.4. Каковы пути поиска заголовочных файлов при компиляции программы?

При компиляции конфигурация пути поиска файла заголовка имеет следующие методы: (Для конкретного использования, пожалуйста, обратитесь к описанию в главе примера)

  • (1) Используйте «gcc -I incpath», чтобы указать путь поиска файла заголовка во время компиляции.
  • (2) Используйте переменную окружения «C_INCLUDE_PATH», чтобы указать путь поиска файла заголовка во время компиляции.
  • (3) Использовать путь поиска заголовка gcc по умолчанию при компиляции.

Описание общих каталогов заголовочных файлов:

/ usr / src / linux / — это путь к исходному коду ядра, а / usr / src / linux / include содержит заголовочный файл ядра, который обычно используется при компиляции модуля.

Путь / usr / include — это в основном заголовочный файл glibc, который используется для компиляции файлов пользовательского режима. Однако / usr / include также содержит папки linux / и asm /, необходимые для заголовочных файлов ядра, но эти две папки в основном используются для совместимости, а / usr все еще используется для заголовочных файлов ядра. / SRC / Linux / включить.

1.5. При настройке кросс-компилятора, каковы конфигурации пути поиска?

При создании кросс-компилятора необходимо обратить внимание на конфигурацию четырех связанных путей: путь файла библиотеки, связанный во время компиляции, путь файла заголовка, используемого во время компиляции, путь двоичного инструмента, используемого во время компиляции, и имя динамического загрузчика, указанного во время компиляции путь.

  • (1) Путь к файлу библиотеки, связанному во время компиляции:

Если не указан, это должен быть путь по умолчанию, связанный с путем установки. Если вы хотите указать, вы можете использовать опцию «LIB_PATH» при компиляции ld в binutils:

  • (2) Путь к заголовочному файлу, используемому во время компиляции:
  • (3) Бинарный путь инструмента, используемый во время компиляции:

Путь двоичного инструмента по умолчанию можно просмотреть с помощью следующей команды:

Используя указанный двоичный инструмент, вы можете использовать опцию «gcc -B»:

  • (4) Путь и имя динамического загрузчика, указанного во время компиляции:

Путь и имя динамического загрузчика, жестко запрограммированного в elf, указанного в файле спецификации gcc:

2. Пример операции

Создайте два .c файла:

2.1, путь поиска библиотеки при связывании

Скомпилируйте say.c в libsay.so, а затем скомпилируйте libsay.so при компиляции test.c, чтобы проверить путь поиска в библиотеке, когда gcc связан.

  • (1) Используйте «gcc -Llibpath -llibname», чтобы указать путь поиска библиотеки ссылок:

(2) Используйте переменную среды «LIBRARY_PATH», чтобы указать путь поиска библиотеки ссылок:

(3) Используйте «SEARCH_DIR» в сценарии подключения ld, чтобы указать путь поиска библиотеки ссылок:

Используйте команду «ld -verbose», чтобы просмотреть параметр SEARCH_DIR в скрипте ссылок gcc по умолчанию. Конечно, вы также можете использовать «ld -Txxx.lds», чтобы указать скрипт связи.

Скопируйте libsay.so в указанный путь SEARCH_DIR и свяжите тест:

2.2, место поиска библиотеки динамической загрузки во время выполнения

  • (1) Используйте «gcc -Wl, -rpath», чтобы указать путь поиска библиотеки динамических ссылок во время выполнения, и жестко закодируйте в ELF-файл параметр «RPATH»:

Используйте файл readelf для просмотра жестко заданного пути поиска библиотеки времени выполнения в файле elf:

  • (2) Используйте переменную среды «LD_RUN_PATH», чтобы указать путь поиска библиотеки динамических ссылок во время компиляции, и жестко запишите ее в опцию «RPATH» файла ELF:

  • (3) Используйте переменную среды «LD_LIBRARY_PATH», чтобы указать путь поиска библиотеки динамических ссылок во время выполнения:

(4) Используйте файл конфигурации «/etc/ld.so.conf», чтобы указать путь поиска библиотеки динамических ссылок во время выполнения:

(5) Используйте путь поиска по умолчанию «/ lib, / usr / lib» библиотеки динамических ссылок во время выполнения:

Создайте файл .c и файл .h:

2.3 Каковы пути поиска заголовочных файлов при компиляции программы?

(1) Используйте «gcc -I incpath», чтобы указать путь поиска файла заголовка во время компиляции:

(2) Используйте переменную окружения «C_INCLUDE_PATH», чтобы указать путь поиска файла заголовка во время компиляции:

  • (3) Использовать путь поиска заголовка gcc по умолчанию при компиляции:

Метод настройки пути поиска файла заголовка Gcc по умолчанию не уточнен. Но вы можете использовать следующую команду для просмотра:

Используйте путь по умолчанию для компиляции:

Источник

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