linux生成32位庫 如何獲取linux下命令源碼?
如何獲取linux下命令源碼?命令的源代碼是以一個軟件包為單位,放在一個軟件包的源代碼中。如果你想下載一個命令的源代碼,你必須下載這個命令所屬軟件包的源代碼。命令的源代碼在下載的源代碼的相關文件夾中。
如何獲取linux下命令源碼?
命令的源代碼是以一個軟件包為單位,放在一個軟件包的源代碼中。如果你想下載一個命令的源代碼,你必須下載這個命令所屬軟件包的源代碼。命令的源代碼在下載的源代碼的相關文件夾中。一般是src文件夾,對應的主文件名是cmd.c,其中cmd是詳細的命令,比如ls命令的主程序文件是ls.c
因為在不同的Linux發(fā)行版上。源代碼不是以同樣的獲得的。所以以下面兩個常用的Linux發(fā)行版Ubuntu和CentOS為例來說明。
1.Ubuntu中獲取系統(tǒng)命令源代碼的方法。
以32位Ubuntu14.04獲取ls命令源代碼為例,可以通過以下方法下載源代碼:
1)使用哪個命令查看ls命令的位置,如下所示:
哪個ls #輸出:/bin/ls
2)使用dpkg命令查詢ls命令所屬的包。例如,以下內容:
Dpkg -S /bin/ls #輸出:cor:/Bin/LS.
3)使用apt-get命令下載ls命令所在包的源代碼。例如,以下內容:
apt-get source coreutils
注意:
1)使用dpkg時。如果有錯誤。您可以使用sudo命令以root權限運行它。
2)將使用apt-get source下載的源代碼保存到當前文件夾。
。另外,當我們知道命令屬于哪個包的時候,也可以從相應的官網下載。
2.CentOS中獲取系統(tǒng)命令源代碼的方法。
以32位CentOS6.6下獲取的ls命令源代碼為例,可以使用以下方法下載源代碼:
1)配置源代碼的來源
在CentOS中,源的配置文件是:,更改此文件需要root權限。
打開文件并檢查文件的內容。在我的電腦上,該文件的內容如下:
#
#
#鏡像系統(tǒng)使用客戶端的連接IP地址
#更新每個鏡像的狀態(tài),以選擇更新到和的鏡像
#地理上靠近客戶。你應該用這個來更新CentOS
#除非您手動選擇其他鏡像南
#
#如果鏡像列表對您不起作用,作為退路,您可以嘗試
#改為注釋掉baseurl行。
#
#
[基本]
nameCentOS-$releasever - Base
$ releaseveramparch $ basearchamprepoos
#$releasever/os/$basearch/
gpgcheck1
gpgk:///etc/PKI/RPM-gpg/RPM-GPG-KEY-CentOS-6
#發(fā)布的更新
[更新]
nameCentOS-$releasever -更新
$ releaseveramparch $ basearchamprepoupdates
# $ release ver/updates/$ base arch/
gpgcheck1
gpgk:///etc/PKI/RPM-gpg/RPM-GPG-KEY-CentOS-6
#可能有用的附加軟件包
[臨時演員]
nameCentOS-$releasever - Extras
發(fā)布$ releaseveramparch $ basearchamprepoextras
#$releasever/extras/$basearch/
gpgcheck1
gpgk:///etc/PKI/RPM-gpg/RPM-GPG-KEY-CentOS-6
#擴展現(xiàn)有軟件包功能的附加軟件包
[centosplus]
nameCentOS-$releasever - Plus
$ releaseveramparch $ basearchamprepocentosplus
# $ release ver/centosplus/$ base arch/
gpgcheck1
啟用0
gpgk:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
# Centos用戶的貢獻包
[貢獻]
nameCentOS-$releasever - Contrib
$ releaseveramparch $ basearchamprepocontrib
# $ release ver/contrib/$ base arch/
gpgcheck1
啟用0
gpgk:///etc/PKI/RPM-gpg/RPM-GPG-KEY-CentOS-6
這個文件中有兩個變量:releasever和basearch。分別代表發(fā)布版本號和分支。比如在我的電腦上,這兩個值分別是6和i386。注意。Releasever沒有細分為次要版本號。也就是說,它贏了 不要6.6什么的。
從這個文件的內容可以看出,這個文件總共有5個部分。也就是說我的電腦有五個軟件源,分別是base、updates、extras、centosplus和contrib。因此只需要指定其源代碼的來源,例如以下五個軟件來源。例如,在文件末尾添加以下內容:
[base-src]
nameCentOS-$releasever - Base src
gpgcheck1
gpgk:///etc/PKI/RPM-gpg/RPM-GPG-KEY-CentOS-6
[更新-src]
nameCentOS-$releasever -更新src-centos
gpgcheck1
gpgk:///etc/PKI/RPM-gpg/RPM-GPG-KEY-CentOS-6
[附加服務-src]
nameCentOS-$ releasever-Extras src-centos
gpgcheck1
gpgk:///etc/PKI/RPM-gpg/RPM-GPG-KEY-CentOS-6
[centosplus-src]
name centos-$ release ver-Plus src-centos
gpgcheck1
gpgk:///etc/PKI/RPM-gpg/RPM-GPG-KEY-CentOS-6
[弊trib-src]
nameCentOS-$ release ver-Contrib src-centos
gpgcheck1
gpgk:///etc/PKI/RPM-gpg/RPM-GPG-KEY-CentOS-6
因為不同的版本號設置會有所不同,所以其設置也會有所不同,方法可以概括如下:
(1)1)gpgkey與本文檔中現(xiàn)有部分的gpg key相同。
(2)為了確認檔案的存在和情況,可以打開站點查看詳細情況,然后根據(jù)詳細情況填寫。
(3)設置baseurl時,要根據(jù)自己系統(tǒng)的版本號來設置。如果我的機器是CentOS-6.6,設置時相關參數(shù)會設置為6.6。也就是后面的子路徑是6.6。
這個文件的目的是為yum及其相關作品的下載提供一個源碼。例如,當使用yumdownloader(下面討論)下載源代碼時。例如,將發(fā)生以下操作:
(1)下載$baseurl/repodata/repomd.xml文件。如果repomd.xml文件比系統(tǒng)中的文件新。更新系統(tǒng)中相應的repomd.xml。
(2)下載$baseurl/SPackages/中對應的源rpm包。
2)使用哪個命令查看ls命令的位置,如下所示:
哪個是
#輸出:/bin/ls
3)使用rpm命令查詢ls命令所屬的包,如下所示:
rpm -qf /bin/ls
#輸出:coreutils-8.4-37.el6.i686
4)yumdownloader是一個從RPM源碼下載RPM的程序,可以用命令yumdownloader安裝源碼。例如,以下內容:
yum downloader-source coreutils-8.4-37 . el6 . i686
注意:
(1)如果沒有安裝yumdownloader命令,可以使用此命令安裝:yum install yum-utils。
(2)下載的文件在當前文件夾中。您可以使用參數(shù)- destdir來指定下載到哪個文件夾。
5)你用yumdownloader下載的是一個安裝包文件rpm,你可以用以下命令查詢rpm中的tar文件,例如:
rpm -qpl | grep tar
# output: coreutils-8.4.tar.xz
6)使用rpm2cpio命令將rpm包文件轉換為cpio存檔文件,然后使用cpio命令從cpio存檔文件中復制并提取一個。檔案文件。舉以下例子:
rpm2 cpio | cpio-idv coreutils-8.4 . tar . xz
#輸出:
# coreutils-8.4.tar.xz
# 9561街區(qū)
Cpio s man解釋為:cpio將文件復制到一個存檔中
-i:相當于- extract。提取的含義
-d:相當于-make-directory,必要時創(chuàng)建一個加載文件夾。
-v:列出了文件的處理過程。
7)使用tar命令解壓coreutils-8.4.tar.xz壓縮包,如下:
tar -xvf。/cor
linux能創(chuàng)建多少層目錄?
linux的ext3文件系統(tǒng)的一級子目錄默認為31998個,準確的說是32000個。
Linux對于cpu的搜索效率是有規(guī)定的,內核需要重新編譯改變數(shù)量限制。內核代碼中有這樣的內容:
includ: #定義EXT2_LINK_MAX 32000
includ: #定義:不能刪除 。# 39 or ..# 39 "。所以32000-231998。
對于ext3文件系統(tǒng)中單個目錄中的最大文件數(shù)量沒有特殊限制,它受到文件系統(tǒng)中inode數(shù)量的限制。
在一個目錄中接觸100萬個文件是沒有問題的。但是它肯定會受到文件系統(tǒng)中inode數(shù)量的限制。
Df -i /dev/sdaX或使用tune2fs -l /dev/sdaX或dump 2 fs-h/dev/sdaX來檢查可用的inodes。最后兩個命令的輸出結果是相同的,但是DF獲得的可用inodes會有一些錯誤。
解決互聯(lián)網上inode數(shù)量限制的方法有兩種,如下。
2.1 mkfs,mkfs將更多的inode號(取決于你的fs中的文件總數(shù)),塊將大小調整得更小(根據(jù)每個文件的平均大小)
2.2使用回送文件系統(tǒng)的臨時解決方案:在/usr(或其他地方)創(chuàng)建一個大文件,然后做一個回送文件系統(tǒng),將原文件移動到這個文件系統(tǒng),掛載到/usr下合適的位置。這可以大大減少/usr中的文件數(shù)量。但是系統(tǒng)性能會有一點損失。
查看系統(tǒng)句柄文件的數(shù)量
cat /proc/sys/fs/file-max
查看進程打開的文件數(shù)量
lsof |wc -l