makeマルチタスクパラメータを有効にすると、構築プロセスの完了が加速します.


文書ディレクトリ
  • 前言
  • を探しています
  • 可能な原因
  • 加速
  • 網膜効果
  • 勝手に話して
  • make
  • cmake

  • まとめ
  • 前言
    makeコマンドを使ってコンパイルするのが遅すぎると感じることがあるのではないでしょうか.特にバグを緊急に修正するときは、コンピューターに潜り込んでコンパイラと一緒に仕事をするのが嫌いです.実はmakeコマンドは加速することができます.-jオプションを使ってmake起動のタスク数を指定することができます.--jobs[=jobs]の略です.例えば、make -j4は4つのタスクを同時に起動して並列に構築することを示しています.4倍にもならない関係ですが、元よりずっと早いです.
    探す
    このようなパラメータを探す原因はやはりコンパイルが遅すぎると感じて、特に共通のヘッダファイルを修正する時、ほとんど最初から最後までコンパイルして、-jパラメータを有効にする過程は異常に順調で、何の間違いもなく、迅速に構築して完成して、これは私に前のプロジェクトで出会った問題を思い出しました.
    同じようにコンパイルの过程は比较的に遅いですが、お兄さんは私にマルチスレッドコンパイルを有効にすると间违いを报告すると教えてくれました.
    可能な原因
    知識が豊かになると、このような問題に直面するのはまだ少し手がかりがあり、make -jnを有効にするとマルチタスク並列構築と呼ばれ、マルチスレッドコンパイルやマルチプロセスコンパイルを書く文章もあり、表現から見ると少なくともマルチプロセスであり、タスクリストでは異なるプロセスidが見られるため、ここの名前は重点ではありません.ポイントは複数の任務が同時に働いていることです.
    マルチタスク構築を有効にすると、元のシリアル構築ロジックがパラレルになります.この場合、構築に失敗するのは、依存関係の指定が正しくないためです.この依存関係には通常2つあります.
  • BモジュールコンパイルにはAモジュールの関数
  • が必要である.
  • Bモジュール構築中に必要な一時データはAモジュール構築時に発生し、2種類の共通一時データであるが、秩序
  • である.
    まとめると論理的にはAコンストラクションが完了してからBコンストラクションを開始する必要があり、このときBコンストラクションを先に行うとエラーが発生し、makeを使用すると成功する理由が説明されますが、make -j4を使用するとコンストラクションが失敗し、なぜ失敗したのかを説明した後、このコマンドを複数回実行すると成功する可能性があります.複数回実行するとAモジュールを先に構築してしまう可能性があるので、後でBを構築してもエラーは発生しません.
    スピードを上げる
    以上の解析から,モジュール間の依存関係がマルチタスク構築時の順序を決定していることが分かるが,すべての構築タスクが-jで加速できるのではないか.答えはもちろん否定的ですが、プロジェクトを構築するすべてのモジュールの依存関係が完全に線形であれば、次のように並列に完了することはできません.
    A
    B
    C
    D
    E
    F
    しかし、タスク全体が分割でき、依存図全体に分岐が現れると、このような依存関係を加速することができます.
    A
    B
    C
    D
    E
    F
    上記の関係では,BとCはいずれもAに依存して完成する必要があるが,Aが完成するとBとCの構築が並行して開始され,構築を加速させる目的を達成できる.
    網膜効果make命令という-jの選択肢には気づかなかったが、プロジェクトで一度使ってから、globalをインストールしたとき、tendisをコンパイルしたときなど、多くのプロジェクトの説明でこのパラメータを見たことに気づいた.実は周りの多くの人がこれらのことを議論していることに気づいて、自分が以前気づかなかったので、インターネットで調べてみると、これは網膜効果と呼ばれていました.
    網膜効果という学術名詞は白話文で言えば「心」であり、一人一人の目は、心について歩いている.簡単に言えば、この効果の意味は、一人の心身の状況が彼の視線に影響を与えることであり、彼自身が何かや特徴を持っていると、普通の人よりも他の人が彼と同じようにこのような特徴を持っているかどうか、つまり何かに注目すればするほど何かが現れるかどうかに気づくことです.
    網膜効果は狭い視野と思考の反映であり、問題を見るのが全面的ではなく、牛が羊腸道を歩き、ネズミが牛の角を掘る極端な現象さえ現れる.実は一人一人の特質には、長所と短所がたくさんあります.一人で自分の欠点が何なのかしか知らないで、長所を発掘することを知らない時、網膜効果はこの人に彼の身の回りにも多くの人が似たような欠点を持っていることを発見させて、更に彼の人間関係を改善することができなくて、生活も楽しくありません.
    勝手に話をする
    make
    このコマンドに触れたばかりの頃からコンパイルの意味だと思っていましたが、linuxにソフトウェアをインストールするには次の3つのステップが必要だったので、先入観的な考えです.
    ./configure
    ./make
    ./make install
    

    ソースインストールソフトウェアからコンパイルが必要なので、この3つのステップは構成、コンパイル、インストールの意味だと思っていましたが、make自体はコンパイルされず、コンパイルコマンドの運搬業者にすぎません.
    その本当の意味は構築であるべきで、この構築は必ずしもコンパイルではなく、いかなる論理化されたものであってもよいが、makeでコンパイル任務を完成することが多いので、それをコンパイルと結びつけて、構築時に図面が必要である.この図面はMakefileファイルであり、Makefile図面を描く限り、make命令は、それに基づいてタスクを完了することができます.makeコマンドを実行すると、「Here’s your drawing,go go!」と言っているように、「図面はここに置いておいて、力を入れて作ってください」というように、makeの一連の命令は興味深い.
  • make:図面はここに置いておいて、力を入れて作ってください
  • make clean:あなたをこのぼろぼろにして、片付けて
  • make install:あなたが壊したものを、隅に運んで
  • make dist:急いでそれを梱包して
  • cmake makeが命令をコンパイルする運搬工である以上、cmakeはどういう意味ですか.大胆に彼がconfig makeの意味だと推測して、その役割はMakefileファイルを生成することで、言い換えればmakeに図面を作ることです.
    まとめ
  • make -j4コマンドを使用すると、4つのタスクの並列構築が開始され、構築速度が大幅に高速化されます.
  • make自体はコンパイルできません.それは各種コンパイル命令の運搬工だけで、作業
  • を行うにはMakefile図面が必要です.
  • cmakeの役割は、makeを生成するために必要な図面であり、いくつかの仕様のMakefileファイル
  • をより迅速かつ容易に生成することができる.
  • 網膜効果とは、何に注目すればするほど何かが現れる効果であり、狭い視野と思考の反映であり、問題を見るのに全面的ではない
  • を招く.
    =>>リバースリンク、クリックしないで、その場で爆発して、一切責任を負いません!<==
    他人の苦しみを経ずに、他人に善を勧めてはいけない.世の中には理解できないことがあるが、実際に存在する生活がある.