ホームページ > 記事 > システムチュートリアル > Linux カーネル開発のソース コードの読み取りと編集を理解するためのツールと方法は何ですか?
組み込み Linux 製品の開発では、多くの場合、組み込み製品の機能要件とパフォーマンス要件を満たすようにカーネルを調整およびカスタマイズする必要があります。この記事では、Linux カーネルのソース コードを読み取るためのいくつかのツールとテクニックを紹介します。
ここで言う「Linux カーネル開発」とは、組み込み Linux 製品開発におけるカーネルおよびドライバー関連の開発作業のみを指し、Linux を中心とするカーネル開発チームによるカーネル開発とは大きく異なります。
古いことわざにあるように、「仕事をうまくやり遂げたいなら、まずツールを磨かなければなりません。」数ギガバイトの Linux カーネル コードに直面すると、コードを読んだり、表示したり、検索したりする必要があります。初めて Linux カーネル コードに触れる開発者は皆、どこから始めればよいかわからないと感じています。以下では、その後のカーネル開発に便利ないくつかのソース コード読み取りおよびインデックス作成ツールを推奨します。
1、ソースインサイト
SourceInsight は、Windows プラットフォームで非常に人気のあるソース コードの読み取りおよび編集ツールです。多くの Linux 開発者は依然として Windows でソース コードを編集することに慣れており、Linux カーネル ソース コードの表示と編集も依然として SourceInsight で行われます。
注: SourceInsight は著作権で保護されたソフトウェアであるため、著作権の問題は自分で解決する必要があります。
SourceInsight ソフトウェアをインストールした後、図 1.1 に示すように、新しいプロジェクトを作成し、名前を付けてデータの保存場所を指定します。
図 1.1 新しいプロジェクト
OK ボタンをクリックして、図 1.2 に示すプロジェクト設定インターフェイスに入ります。
図 1.2 プロジェクト設定
の後にソースコードを追加します。 Linux カーネル ソース コード フォルダーを参照して選択した後、[AddTree] ボタンをクリックして、図 1.3 に示すように、カーネル ソース コード ツリーのすべてのファイルをプロジェクトに追加します。
図 1.3 カーネル ソース コードの追加
追加が完了すると、図 1.4 に示すように、SourceInsight でソース コードを読み取って編集できるようになります。
図 1.4 SourceInsight でのソース コードの読み取り
2、エクリプス
Eclipse は、Windows プラットフォームと Linux の両方で実行できるクロスプラットフォーム IDE です。グラフィカル インターフェイス操作に慣れている開発者の多くは、Eclipse を使用して Linux 上で Linux ソース コードを表示および編集することに慣れています。
Eclipse で Linux カーネルのソース コードを表示するだけの場合は、事前にクロスコンパイラーをインストールする必要はありません。それ以外の場合は、事前にクロスコンパイラーをインストールする必要があります。
カーネル ソース コード プロジェクトを作成します。図 1.5 に示すように、「ファイル」→「新規」→「プロジェクト」をクリックしてプロジェクトの作成を開始し、プロジェクト作成インターフェースで「C プロジェクトの作成」を選択します。
図 1.5 C プロジェクトの作成
[Nextlinux driver download] をクリックし、CProject インターフェイスの [Projectname] 列にプロジェクト名を入力し、[Usedefaultlocation] チェックボックスをオフにして、[Browse] をクリックして場所を Linux カーネル ソース コード ディレクトリに設定します。 linux カーネル コードの読み取り図に示すように、tool を参照してください。 1.6 に示すように。 Eclipse でカーネルをコンパイルしない場合は LinuxGCC を使用できますが、それ以外の場合はインストール済みの CrossGCC を使用してください。
図 1.6 Linux カーネル ソース コードのエクスポート
次に、「完了」をクリックして Linux カーネル ソース コードのエクスポートを完了します。図 1.7 に示すように、コードは Eclipse で読み取って編集できるようになります。
図 1.7 Eclipse でのカーネル ソース コードの参照
Eclipse でソース コードの追跡を実行するには、関数、変数、またはマクロ定義を選択して F3 キーを押すだけです。 「ナビゲート」にはさらに多くの操作があります。
3.vim ctags cscope
Vi/Vim は、Vim でのコード編集を効率的に実装できるテキスト エディターです。しかし、Vim の機能は単なるテキストエディタではなく、ctags や cscope と連携することで、グラフィカル IDE 環境ともいえるソースコードの編集機能や読み込み機能を実現することができ、ある意味グラフィカル IDE よりも便利です。 。
Vi/Vim のインストールは導入されなくなりました。リモート ログインを通じてリモート サーバーではなく、ローカル デスクトップ システムで作業している場合は、gvim を使用して Vi エディタを起動することもできます。
lタグリスト
Taglist は Vim 用のソース コード参照プラグインであり、Web サイトから入手できます。圧縮パッケージをダウンロードした後、ローカルで解凍し、解凍されたディレクトリ内のプラグイン ディレクトリを ~/.vim ディレクトリにコピーします。ホストディレクトリに .vim ディレクトリがない場合は、そのようなディレクトリを作成してください。
lCタグ
Ctags は、タグ ファイルの作成に使用されるソフトウェアです。コンパイルとインストール用のソース コードをダウンロードできます。Ubuntu では、apt-get を通じてインストールできます:
$sudoapt-getinstallexuberant-ctags
lソースコードの読み取りと追跡
表示するソース コードが配置されているディレクトリに移動し、最初にタグ ファイルを生成します:
$ctags-R
実行時間はソースコードの数によって異なりますが、実行後はカレントディレクトリにタグファイルが表示されます。ソース コードの数が増えると、実行時間が長くなり、形成されるタグ ファイルのサイズも大きくなります。
注: ソース コードが変更され、コード行番号が変更された場合は、タグ ファイルを再生成する必要があります。
(1) 関数の定義などを確認します。 Vi/Vim で C ファイルを開きます。関数、変数、構造体、またはマクロ定義が定義されている場所がわかっている場合は、まず関数 (変数、構造体、またはマクロ定義) にカーソルを置き、次に CTRL] を押します。表示後、CTRL o を押して元の場所に戻ります。
(2) ファイル機能一覧を表示します。 C ファイルを開いた後、Vi/Vim のコマンド状態で TlistToggle と入力すると (Vi/Vim でのコマンド入力は補完をサポートします)、図 1.8 に示すように、Vi/Vim の右側に関数リストのサイドバーが表示されます。 CTRL ww (w を 2 回) を押して、リスト表示とコード表示を切り替えます。
図 1.8 Vi/Vim 関数リストのサイドバー
Gvim を使用してローカル デスクトップ上の C ファイルを開くと、IDE 統合環境に近づきます。キーボードで関数をダブルクリックすると関数が定義されている場所にジャンプし、CTRL キーを押しながら右クリックすると元の場所に戻ります。より実用的な機能については、実際の操作で体験する必要があります。
4、LXR
LXR は LinuxCrossReferencer の略で、Linux のソース コード閲覧ツールとしてよく使われていますが、実は Linux のソース コードの閲覧だけに限定されません。 LXR のダウンロード アドレスは次のとおりです。Web サイト linux カーネル コード読み取りツール のインストール手順を参照してください。ソース コードを表示するために、このマシン上にローカル LXR を簡単に構築できます。
ローカルの LXR を構築したくない場合は、すでにセットアップされている LXR Web サイトを直接参照できます。推奨される Web サイトは 2 つあります。1 つは、オープン ソースの中国語 Web サイトによって提供される Linux ソース コードのオンライン リーディングです。後者は高速で、Linux カーネルのバージョンが少なく、前者はより多くのバージョンを提供します。このWebサイトでは、ソースコードの読み取り、キーワード検索、フリーテキスト検索の機能が提供されます。 2 つの Web ページのスナップショットをそれぞれ図 1.9 と図 1.10 に示します。
図 1.9 Web ページのスナップショット
図1.10 Webページのスナップショット
以上がLinux カーネル開発のソース コードの読み取りと編集を理解するためのツールと方法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。