Linux下如何編譯Android源碼~~~?
這個問題已經找到解決方案了,方法如下:
1.在Linux設置文件***享,將項目***享,最好有個密碼什麽的。
2.在Linux上配置sshserver,用於和編譯安卓源碼3.Linuxmac通過連接,原因是有線傳輸比無線的快很多,ping只是0.3左右ms,不影響使用。然後就可以mac編寫代碼,然後ssh編譯什麽的,很方便,
linux壹般是怎樣進行源碼安裝的?
比如妳想安裝無損音樂解碼包flac就需要以下幾步:
從官網或源碼網站上下載源碼包:
我壹般從
http://packages.debian.org
上下載。搭建編譯環境
這裏主要是安裝壹些編譯工具,如gcc(g++)、autoconf、automake、build-essential等
~$sudoapt-getinstallgccg++autoconfautomakebuild-essential
這裏,我早就裝過了,所以沒有什麽多余的安裝信息。
解壓軟件包,並進入源碼文件夾
~$tar-xvfflac_1.3.0.orig.tar.xz
~$cdflac-1.3.0
根據需要選擇合適的編譯參數
~$./configure--help
(1)這裏演示禁用ogg的支持,即選用編譯參數--disable-ogg;
(2)同時將flac庫裝在用戶主目錄下的inst文件夾下,即設置參數--prefix=$HOME/inst
編譯flac源碼
(1)檢查編譯環境能否完成編譯,生成Makefile文件
~$./configure--prefix=$HOME/inst--disable-ogg
(2)進行編譯
~$./make-j$(nproc)
這裏多核心的cpu可以通過-j選項加速編譯過程
(3)安裝
~$makeinstall(安裝的目錄當前用戶有讀寫權限)或
~$sudomakeinstall(安裝的目錄當前用戶沒有讀寫權限)
安裝完畢,將編譯好的庫和可執行文件添加到搜索路徑中
~$cd$HOME/inst
~$exportPATH=$HOME/inst/bin:$PATH
~$exportLD_LIBRARY_PATH=$HOME/inst/lib:$LD_LIBRARY_PATH
~$exportPKG_CONFIG_PATH=$HOME/lib/pkgconfig:$PKG_CONFIG_PATH
這裏,如果是安裝到/usr或/usr/local文件夾內,壹般是不需要設置這些參數的。
整個編譯安裝過程中容易出現問題的地方就是5.(1)(生成Makefile)和5.(2)(編譯源碼)這兩個地方。
5.(1)出的問題壹般是:
(1)待編譯庫的依賴庫沒有安裝。這就必須先安裝依賴庫
(2)環境變量未設置好,即使依賴庫安裝了也找不見。這必須設置好LD_LIBRARY_PATH、PATH和PKG_CONFIG_PATH這三個環境變量;或者根據./configure--help中所給定的--with-xxx=/path/to/dependent/library來指定依賴的庫
5.(2)出的問題壹般是:
(1)有些源碼文件編譯不過。這要麽搜貼查找解決方法,要麽放棄編譯(實在無能為力),因為這些錯誤有可能是潛在的或者已經出現的bug。。。
(2)鏈接時某些庫鏈接不上。這需要在生成Makefile之前設置CFLAGS或CXXFLAGS環境變量來實現,壹般為:exportCFLAGS="-I/path/to/some/library's/include/dir-L/path/to/some/library's/lib/dir-lsomelibrary"。
源碼編譯中的庫依賴是十分令人頭痛的,祝妳好運。。。
如何獲取linux下命令源碼?
命令的源碼是壹個軟件包為單元的,放在壹個軟件包的源碼中。若要下載壹個命令的源碼,就要把這個命令所屬的軟件包的源碼都下載下來。命令的源碼就在下載的源碼的相關文件夾內。壹般是src文件夾,對應的主文件名稱為cmd.c,當中cmd為詳細的命令,如ls命令的主程序文件為ls.c。
因為在不同的Linux發行版上。源碼的獲取方法並不同樣。所以以下以Ubuntu和CentOS這兩種經常使用的Linux發行版為樣例進行說明。
1、Ubuntu中系統命令源碼的獲取方法
以32位Ubuntu14.04下,獲取ls命令的源碼為例,能夠使用例如以下的方法下載源碼:
1)使用which命令查看ls命令的位置,例如以下:
whichls#輸出:/bin/ls
2)使用dpkg命令查詢ls命令所屬的包。例如以下:
dpkg-S/bin/ls#輸出:coreutils:/bin/ls
3)使用apt-get命令來下載ls命令所在的包的源碼。例如以下:
apt-getsourcecoreutils
註:
1)在使用dpkg時。若出現錯誤。能夠使用sudo命令使其以root權限運行。
2)使用apt-getsource下載的源碼保存到當前文件夾下。
。此外,當我們知道了命令所屬的包後,也能夠到對應的官方站點下載。
2、CentOS中系統命令源碼的獲取方法
以32位CentOS6.6下,獲取ls命令的源碼為例,能夠使用例如以下的方法下載源碼:
1)配置源碼的源
在CentOS中,源的配置文件為:/etc/yum.repos.d/CentOS-Base.repo,改動該文件須要root權限。
打開該文件,查看該文件的內容,在本人的機子上,該文件的內容例如以下:
#CentOS-Base.repo
#
#ThemirrorsystemusestheconnectingIPaddressoftheclientandthe
#updatestatusofeachmirrortopickmirrorsthatareupdatedtoand
#geographicallyclosetotheclient.YoushouldusethisforCentOSupdates
#unlessyouaremanuallypickingothermirrors.
#
#Ifthemirrorlist=doesnotworkforyou,asafallbackyoucantrythe
#remarkedoutbaseurl=lineinstead.
#
#
name=CentOS-$releasever-Base
mirrorlist=http://mirrorlist.centos.org/?release=$releaseverarch=$basearchrepo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
#releasedupdates
name=CentOS-$releasever-Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releaseverarch=$basearchrepo=updates
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
#additionalpackagesthatmaybeuseful
name=CentOS-$releasever-Extras
mirrorlist=http://mirrorlist.centos.org/?
release=$releaseverarch=$basearchrepo=extras
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
#additionalpackagesthatextendfunctionalityofexistingpackages
name=CentOS-$releasever-Plus
mirrorlist=http://mirrorlist.centos.org/?release=$releaseverarch=$basearchrepo=centosplus
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
#contrib-packagesbyCentosUsers
name=CentOS-$releasever-Contrib
mirrorlist=http://mirrorlist.centos.org/?release=$releaseverarch=$basearchrepo=contrib
#baseurl=http://mirror.centos.org/centos/$releasever/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
該文件裏有兩個變量:releasever和basearch。分別表示release版本號和分支,如本人的機子上,這兩個值分別為6和i386。註意。releasever並不會細分為次級版本號。即不會是6.6之類的。
從該文件的內容能夠知道,該文件***同擁有5個節。也就是說本人的機子的軟件來源有5處,分別為base、updates、extras、centosplus和contrib。所以僅僅須要為例如以下的5處軟件源指定其源碼的源就可以。在文件的末尾加上例如以下的內容:
name=CentOS-$releasever-Basesrc
baseurl=http://vault.centos.org/6.6/os/Source/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
name=CentOS-$releasever-Updatessrc-centos
baseurl=http://vault.centos.org/6.6/updates/Source/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
name=CentOS-$releasever-Extrassrc-centos
baseurl=http://vault.centos.org/6.6/extras/Source/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
name=CentOS-$releasever-Plussrc-centos
baseurl=http://vault.centos.org/6.6/centosplus/Source/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
name=CentOS-$releasever-Contribsrc-centos
baseurl=http://vault.centos.org/6.6/contrib/Soruce/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
因為不同的版本號設置會有所不同,所以其設置會有所不同,方法可總結為例如以下:
(1)gpgkey與該文件裏已有的節的gpgkey同樣
(2)為了確認文件的存在和情況,能夠打開站點http://vault.centos.org/查看詳細的情況,再依據詳細的情況來填寫
(3)設置baseurl時須要依據自己的系統的版本號來設置,如本人的機子為CentOS-6.6,則在設置時,相關的_數就設置為6.6。即http://vault.centos.org/後接的子路徑為6.6。
該文件的作用是為yum其及相關工作的下載提供壹個源。如在使用yumdownloader(以下會講到)下載源碼時。會發生例如以下動作:
(1)下載$baseurl/repodata/repomd.xml文件。若該repomd.xml文件比系統中的新。更新系統中的對應的repomd.xml
(2)下載$baseurl/SPackages/中的對應的源碼rpm包。
2)使用which命令查看ls命令的位置,例如以下:
whichls
#輸出:/bin/ls
3)使用rpm命令查詢ls命令所屬的包,例如以下:
rpm-qf/bin/ls
#輸出:coreutils-8.4-37.el6.i686
4)yumdownloader是壹個從RPM源下載RPM的程序,能夠使用yumdownloader命令安裝源碼。例如以下:
yumdownloader--sourcecoreutils-8.4-37.el6.i686
註:
(1)若yumdownloader命令沒有安裝,則能夠使用此命令安裝:yuminstallyum-utils。
(2)下載的文件在當前文件夾下。能夠使用_數--destdir指定下載到哪壹個文件夾。
5)使用yumdownloader下載到的是壹個安裝包文件rpm,能夠使用例如以下的命令查詢rpm中的tar文件:
rpm-qplcoreutils-8.4-37.el6.src.rpm|greptar
#輸出:coreutils-8.4.tar.xz
6)使用rpm2cpio命令將rpm包文件轉換成cpio歸檔文件,再使用cpio命令,從cpio歸檔文件復制提取出壹個歸檔文件。出例如以下:
rpm2cpiocoreutils-8.4-37.el6.src.rpm|cpio-idvcoreutils-8.4.tar.xz
#輸出:
#coreutils-8.4.tar.xz
#9561blocks
cpio的man解釋為:cpiocopiesfilesintoanarchive
-i:與--extract等同。提取之意
-d:與--make-directories等同,當有須要時創建壹個載入文件夾
-v:列出文件的處理過程
7)使用tar命令對coreutils-8.4.tar.xz壓縮包進行解壓縮,例如以下:
tar-xvf./coreutils-8.4.tar.xz
至此,命令的源碼獲取完畢。