日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux源码安装步骤

發布時間:2025/5/22 linux 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux源码安装步骤 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Linux上幾乎所有的軟件都經過了GPL授權,因此幾乎所有的軟件都會提供源碼。?
而一個軟件要在Linux上執行,必須是二進制文件,因此當我們拿到軟件源碼后,需要將它編譯成二進制文件才能在Linux上運行。

軟件編譯過程

將源碼編譯成可供Linux運行的二進制文件一共需要兩步:?
1. 使用gcc編譯器將源碼編譯成目標文件?
2. 再次使用gcc編譯器將目標文件鏈接成二進制文件

這過程看似簡單,實則不然。一個軟件的源代碼往往被封裝在多個源文件中,此外這些文件有錯綜復雜的依賴關系,編譯需要嚴格按照指定的順序進行,這無疑增加了編譯的難度。好在make命令可以幫助我們簡化編譯過程。

整個編譯過程被濃縮在Makefile文件中(告訴make命令需要怎么去編譯和鏈接程序),當執行make命令時,make會去當前目錄中尋找Makefile文件,并根據該文件中的要求完成整個編譯過程。

而Makefile文件由configure命令產生。當執行configure命令時,configure會根據當前系統環境動態生成一個適合本系統的Makefile文件,供make命令使用。

Linux源碼安裝步驟

  • 獲取源碼?
    將軟件的源碼下載至/usr/local/,并解壓。
  • 查看INSTALL與README文件?
    解壓后查看INSTALL與README文件,這兩個文件中詳細介紹了本軟件的安裝方法和注意事項。
  • 創建Makefile文件?
    執行configure命令,生成Makefile文件。
  • 編譯?
    執行make clean;make命令將源碼編譯成二進制文件。?
    PS:make clean命令用來清除上一次編譯生成的目標文件。這個步驟可有可無,但為了確保編譯的成功,還是加上為好。防止由于軟件中含有殘留的目標文件導致編譯失敗。
  • 安裝?
    執行make install命令將上一步編譯好的二進制文件安裝到指定的目錄中去。
  • 安裝演示

    1.進入/usr/local/,并創建memcached目錄:

    cd /usr/local/ mkdir memcached

    2.下載memcached的源碼

    wget http://memcached.org/files/memcached-1.4.29.tar.gz

    3.解壓源碼

    tar -zxvf memcached-1.4.29.tar.gz

    4.執行configure,生成Makefile文件

    ./configure --prefix=/usr/local/memcached/

    此時當前目錄下將會生成一個Makefile文件。

    • 注意:–prefix參數指定軟件安裝目錄。當執行make install命令時,會將軟件安裝在此路徑中。

    5.執行make,從Makefile中讀取指令,編譯源碼

    make clean; make

    此時make會讀取Makefile文件,將源碼編譯成二進制文件,并存放在當前目錄下。

    6.執行make install,將軟件安裝至指定目錄

    make install

    此時二進制文件會被安裝到先前configure prefix參數設置的路徑中去。?
    安裝完成!

    ?

    cmake命令

    cmake就是一個與make同級別的編譯工具,只不過它依靠的不是Makefile作為編譯規則,而是根據CMakeLists.txt來編譯的。
    CMake是一個比make更高級的編譯配置工具,它可以根據不同平臺、不同的編譯器,通過編寫CMakeLists.txt,可以控制生成的Makefile,從而控制編譯過程。
    CMake自動生成的Makefile不僅可以通過make命令構建項目生成目標文件,還支持安裝(make install)、測試安裝的程序是否能正確執行(make test,或者ctest)、生成當前平臺的安裝包(make package)、生成源碼包(make package_source)、產生Dashboard顯示數據并上傳等高級功能,只要在CMakeLists.txt中簡單配置,就可以完成很多復雜的功能,包括寫測試用例。
    如果有嵌套目錄,子目錄下可以有自己的CMakeLists.txt。

    a) 編寫 CmakeLists.txt。
    b) 執行命令"cmake PATH"或者"ccmake PATH"生成 Makefile ( PATH 是 CMakeLists.txt 所在的目錄 )。

    [root@localhost mariadb-10.0.34]# cmake . -LH # "."表示編譯當前目錄,打印參數選項

    列子:
    cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql/ -DMYSQL_DATADIR=/usr/local/mysql/data/ -DEFAULT_CHARSET=utf8 -DMYSQL_TCP_PORT=3306 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DWITH_DEBUG=0 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DMYSQL_USER=mysql

    上述參數:
    -DCMAKE_INSTALL_PREFIX=/data/mysql 準備安裝到那里
    -DEFAULT_CHARSET=utf8 默認的字符集
    -DMYSQL_TCP_PORT=3306 數據庫的監聽端口
    -DMYSQL_UNIX_ADDR=/tmp/mysql3306.sock 本機連回數據庫的unix socket
    -DWITH_DEBUG=0 關閉debug模式
    -DWITH_INNOBASE_STORAGE_ENGINE=1 打開innodb引擎

    ?

    1. 什么是“Linux函數庫”?

    運行在Linux上的軟件時常會調用Linux內核的某些功能或其他軟件的某些功能,那么這些被軟件調用的功能稱為Linux的函數庫。軟件自身的函數庫存放在軟件安裝目錄下的lib中,而Linux的函數庫存放在/usr/lib和/usr/include中,linux內核的函數庫存放在/lib/modules中。

    2. Linux函數庫的分類

    Linux函數庫分為靜態函數庫 和 動態函數庫。?
    1. 靜態函數庫?
    - 擴展名:xxx.a?
    - 在編譯時會被整合到軟件的二進制文件中去。因此擁有靜態函數庫的軟件較為龐大。而且當系統的函數庫更新時,引用該函數庫的所有軟件都需要重新編譯才能正常使用。這是非常麻煩的!但擁有靜態函數庫的軟件可以獨立運行。?
    2. 動態函數庫?
    - 擴展名:xxx.so?
    - 在編譯時僅僅將函數庫的路徑整合到軟件的二進制文件中去。由于軟件中包含的是函數庫的路徑,因此該軟件無法獨立運行,且函數庫的路徑不能發生變化,一旦變化,該軟件將無法找到函數庫,從而無法運行!這是動態函數庫的最大缺點。但當動態函數庫更新時,軟件無需重新編譯,因此更新較為方便,這是動態函數庫的最大優點。

    目前大部分軟件均使用動態函數庫,就是因為動態函數庫在更新時體現出的優勢。

    3. 提升函數庫讀取效率

    軟件在運行某些功能時需要調用函數庫中的函數,而函數庫又是以文件的形式存放在外設上。那么如果將函數庫存放在內存中,那么將會大大提升讀取速度。在Linux中,可以使用ldconfig命令將指定的函數庫加載進內存。具體步驟如下:?
    1. 在/etc/ld.so.conf中設置需要加載進內存的函數庫?
    2. 使用ldconfig命令使配置生效

    4. 查看軟件的動態函數庫

    使用ldd命令即可查看指定軟件所使用的全部動態函數庫。

    [root@iZ231tx6fm4Z tomcat]# ldd /usr/bin/passwdlinux-vdso.so.1 (0x00007fff3adff000)libuser.so.1 => /usr/lib64/libuser.so.1 (0x00007f6428bd5000)libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007f642899d000)libgobject-2.0.so.0 => /lib64/libgobject-2.0.so.0 (0x00007f6428751000)libgmodule-2.0.so.0 => /lib64/libgmodule-2.0.so.0 (0x00007f642854e000)libglib-2.0.so.0 => /lib64/libglib-2.0.so.0 (0x00007f6428249000)libpopt.so.0 => /lib64/libpopt.so.0 (0x00007f6428040000)libpam_misc.so.0 => /lib64/libpam_misc.so.0 (0x00007f6427e3c000)libaudit.so.1 => /lib64/libaudit.so.1 (0x00007f6427c20000)libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f6427a01000)libc.so.6 => /lib64/libc.so.6 (0x00007f642765b000)libpam.so.0 => /lib64/libpam.so.0 (0x00007f642744d000)libgthread-2.0.so.0 => /lib64/libgthread-2.0.so.0 (0x00007f6427249000)librt.so.1 => /lib64/librt.so.1 (0x00007f642702e000)libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f6426e11000)libdl.so.2 => /lib64/libdl.so.2 (0x00007f6426c0d000)/lib64/ld-linux-x86-64.so.2 (0x00007f6428dee000)

    原文:https://www.cnblogs.com/benwu/articles/8436209.html

    《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

    總結

    以上是生活随笔為你收集整理的Linux源码安装步骤的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。