コンパイルインストールglibc


今朝dup 2関数の実装を検討してファイル記述子に関するモデルを検証しようとしたが、gdbでデバッグしたところ「/sysdeps/unix/syscal-template.S」ファイルにジャンプした.明らかにこれはシステム呼び出しのテンプレートファイルであり、これまで検討したfork関数には一定の特殊性がある(ARCH_FORKマクロでシステム呼び出しにジャンプした).だから今日はglibcコンパイルをインストールして、塩加減を食べてみましょう.
1. ./configure
一般的にこのようなソフトウェアのインストールは、3つのステップです.
  • ./configureマシンの特徴に基づいて、ファイルをいくつか構成します.
  • ./makeコンパイル、リンク生成実行可能ファイル.
  • ./make installコンパイルしたファイルを指定したフォルダにコピーするには、一般的にこのステップに権限が必要です.

  • では、まず最初のステップに進み、「./configure」を直接実行すると、次のエラーが発生します.
    configure: error: you must configure in a separate build directory
    

    「glibcの現在のディレクトリでconfigureを実行できない」という資料を検索したので、上記のコマンドを次のように変更しました.
    mkdir glibc-2.21-build
    mkdir glibc-2.21-install 
    cd glibc-2.21-build
    ../glibc-2.21/configure --prefix=../glibc-2.21-install
    の結果、次のエラーが発生しました.
    configure: error: expected an absolute directory name for --prefix: ../glibc-2.21-install
    

    コマンドを変更し、絶対アドレスに変更して試してみます.エラーは次のとおりです.
    *** These critical programs are missing or too old: gawk
    *** Check the INSTALL file for required versions.
    

    機械にgawkが入っていないので、先に入れてから試してみます.
    *** These auxiliary programs are missing or incompatible versions: makeinfo
    *** some features will be disabled.
    *** Check the INSTALL file for required versions.
    checking LD_LIBRARY_PATH variable... contains current directory
    configure: error: 
    *** LD_LIBRARY_PATH shouldn't contain the current directory when
    *** building glibc. Please change the environment variable
    *** and run configure again.
    

    エラーは次から次へと発生しますが、最初の問題は簡単ですが、ここでtexinfoをインストールするには、makeinfoを直接インストールする必要はありません.
    2つ目の質問ですが、ここは気まずいです.エラーメッセージはLDです.LIBRARY_PATHには現在のフォルダが含まれています.しかし、私のqtはホームフォルダの下にインストールされているので、この問題を解決するには現在2つの案があります.1つ目はLD_LIBRARY_PATHを一時的に空にする.2つ目の案はまずLDをLIBRARY_PATHは永久に空にし、取り付けが終わってから変更します.
    まず、最初のシナリオを試してみましょう.コマンドは次のとおりです.
    export LD_LIBRARY_PATH=

    はい、問題は解決されました.
    2.makeの実行
    このステップは何も言わずにmakeを直接実行すればいいのですが、実行時間は長いです.
    エラーが発生しました.エラーも計算されないかもしれません.
    *** errlist.c count 134 inflated to GLIBC_2.12 count 135 (old errno.h?)
    

    makeの実行に影響しないで、先に放っておきます.
    3.make installの実行
    ここまで実行すれば、幸福と快楽は結末であるべきだと思っていたが、結果として以下のエラーが発生した.
    make[2]: *** No rule to make target 'libc.texinfo', needed by '/home/andywang/glibc-2.21-build/manual/libc.info'.  Stop.
    make[1]: *** [manual/subdir_install] Error 2
    make: *** [install] Error 2
    

    またインターネットで調べたら、大変な結果になりましたね.第二歩はmake allを実行すべきだと思います.よし、すべてのものを削除してから、make allの結果を試してみましょう.
    make allは上記の警告が出ていますが、この部分はmanualを装っているのを見てみました.他に必要な/bin、/include、/libは全部入っているはずです(でも私も確信していません).
    はい、glibcをインストールする過程はまず皆さんに共有します.