リアルタイムカーネルヘッダと基本ヘッダを使用したユーザ空間コードのコンパイル

リアルタイムカーネルヘッダと基本ヘッダを使用したユーザ空間コードのコンパイル

顧客の要求に応じて、デフォルトのカーネルと共にCentOS 5.6をインストールしました。このカーネルをインストールした後、 time.h ファイルに#define CLOCK_MONOTONIC

これで、リアルタイムカーネルは、私たちのコードで使用したいカーネル開発と共にインストールされますCLOCK_MONOTONIC_RAW。カーネルヘッダーの一部として存在しますが、コードをコンパイルすると、標準ユーザースペースの埋め込みには見つかりません。

time.h私の質問は、ライブカーネルを使用して基本的に見つかるものを含む/交換する正しい手順は何ですか?私の研究では、シンボリックリンクが悪いようです。それでは、これについてどうすればよいですか?手順または手順は何ですか? CentOS 6.0または5.7へのアップグレードは、お客様の要件に応じたオプションではありません。

ベストアンサー1

ヘッダファイルソースには主な違いがあります。

  • <time.h>glibcによって提供されます(例:glibc-headersパッケージ)
  • <linux/time.h>Linuxカーネルヘッダファイルで提供されています。

カーネルとヘッダーパッケージを変更しても効果はありません<time.h>。 glibcを変更しないと、これを行うことができません。

<time.h>glibcのインクルード<bits/time.h>がegで解決され定義されて/usr/include/x86_64-linux-gnu/bits/time.hいることを確認する必要がありますCLOCK_MONOTONIC_RAW。それ以外の場合はアップグレードできない場合は、次のコードを含める必要があります。

#include <time.h>
#ifndef CLOCK_MONOTONIC_RAW
# define CLOCK_MONOTONIC_RAW 4
#endif

おすすめ記事