導航:首頁 > 源碼編譯 > 源碼安裝中編譯命令為

源碼安裝中編譯命令為

發布時間:2022-10-31 11:40:26

1. linux程序安裝

configuremakemake install這是一般步驟 tarball原代碼包安裝 具體各個過程簡單說如下configure:建立makefile(make的時候需要用到),詳細信息可以參考壓縮包下readme或install相關文件。make:讀取makefile相關消息進行編譯。將源代碼編譯成可執行的可執行文檔,但是這些文件仍放在本目錄下。make install : 將上一步編譯出來的可執行文檔安裝到預定安裝的目錄中。 差不多就是這樣得啦。記得按順序來安裝。否則安裝不了。因為每個步驟都是需要上一步作為基礎的。 這么麻煩不是,套件升級就更麻煩的說。 所以直接找rpm包安裝的了 rpm -ivh 文件 就ok了

2. 怎麼在ubuntu上編譯android源碼

步驟一:
安裝Ubuntu系統。我們既可以通過虛擬機的方式安裝Ubuntu,也可以直接在電腦上安裝,為了獲得更好的Linux操作體驗,我建議直接在電腦上面安裝Ubuntu,我在自己電腦上安裝了win10和Ubunut Server14.04雙系統,使用的時候可以根據自己的需要隨時切換系統,非常方便。關於如何搭建雙系統,網上有很多教程,我就不在此敘述了,但是我想說明的一點是在安裝Ununtu的時候,分配給Ubuntu的磁碟空間一定要盡可能大一點,至少60G,我分配了105G,編譯完成之後還剩下50多G,也就是說差不多用了近50G的空間,所以安裝Ubuntu的時候一定得分配大一點的磁碟空間,不然編譯會因為空間不足而中斷。
步驟二:
搭建好Ubuntu系統之後,我們需要下載一份Android6.0的源碼,網上很多文章都介紹了如何通過repo的方式來下載源碼,但是通過這種方式下載速度可能並不是很理想,直接下載網路雲的Android6.0源碼,
因為Android6.0的源碼所佔空間非常大,所以上傳者把Android源碼分成了很多個文件,待全部下載完畢之後,我們可以通過命令把這些分開的文件合並為一個文件。
步驟三:
如果我們是在Windows上下載的源碼,那麼當我們打開Ubuntu之後,要做的第一件事請就是把Windows中的Android源碼拷貝到Ubuntu系統下面,我直接利用復制粘貼的方式將源碼拷貝到了Ubuntu的Home目錄下面,拷貝之後的目錄結構Home/android6_r1/各個分開的源碼文件。
步驟四:
合並這些被分開的源碼文件。我們按下鍵盤上的ctrl + alt + T打開控制台,通過cd命令進入到Home/android6_r1/目錄下面,然後執行命令:cat Android6_r1_* > M.tgz,不用多久,在Home/android6_r1/目錄下面就會生成一個新的文件——M.tgz,M.tgz就是合並之後的壓縮文件。
步驟五:
解壓步驟四生成的壓縮文件。同樣是在Home/android6_r1/目錄下面,我們在控制台執行命令:tar zxvf M.tgz,開始解壓。解壓的過程大概需要20分鍾左右的時間,請耐心等待。解壓好了之後,在Home/android6_r1/會生成一個mydroid的文件夾,這個文件夾就是Android源碼的根文件夾了,裡面有abi、devices、hardware、packages、sdk、art等文件夾和文件。
步驟六:
安裝編譯源碼所需要的軟體。在控制台中我們通過cd..命令退回到Unbuntu用戶的根目錄下,然後依次執行以下命令:
sudo apt-get update
sudo apt-get install openjdk-7-jdk
sudo update-alternatives --config java
sudo update-alternatives --config javac
以上命令每一條都必須分開單獨執行,目的是為了獲取1.7版本的jdk並設置環境變數。當我們安裝完Ubuntu之後可能會自帶一個jdk,但是如果用自帶的jdk編譯Android源碼很可能會提示jdk版本不符合要求的錯誤,因此我們需要重新下載1.7版本的jdk,我用openjdk-7-jdk編譯未出現任何問題。
接下來繼續執行以下命令,同樣每一行都是分開單獨執行的:
sudo apt-get install git gnupg flex bison gperf build-essential
sudo apt-get install zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev
sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386
sudo apt-get install libgl1-mesa-dev g++-multilib mingw32 tofrodos
sudo apt-get install python-markdown libxml2-utils xsltproc zlib1g-dev:i386
sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
以上命令主要是安裝編譯源碼時需要用到的各種軟體,如果沒有安裝這些軟體,編譯的過程中會提示缺少必要的軟體而無法繼續編譯,因此,在正式編譯源碼之前,一定要先安裝這些軟體。
步驟七:
開始編譯。在控制台中通過cd命令進入到Home/android6_r1/mydroid/目錄下,然後執行命令:source build/envsetup.sh,導入編譯Android源碼所需的環境變數和其它參數。
步驟八:
在控制台中執行命令:lunch,運行命令之後會提示我們選擇編譯目標。這里我選擇的的默認目標,即aosp_arm_eng。
步驟九:
在控制台中執行命令:make -j8,開始編譯。注意,make -j8命令中的數字8和我們電腦的CPU核心數以及線程數有關系,一般這個數字的數值最大不能超過CPU線程數的2倍,例如我電腦的處理器是i5 6200U,為雙核四線程,因此編譯Android源碼的時候,我可以設置的最大工作線程數量為4 * 2 = 8。在執行make命令的時候我們應該根據自己的CPU參數設置合理的工作線程數值。
以上步驟執行完之後,就是一段非常漫長的等待了,我從中午十二點多開始編譯,一直到晚上九點多編譯完成,整個編譯過程耗時九個多小時,幸好我的運氣還不錯,編譯過程中沒有出現任何錯誤,只是中途意外中斷了一次,但是Android源碼是可以接著上次中斷的位置繼續編譯的,已經編譯的部分不會重復編譯,因此並未對我造成大的影響。同志們,我想說的是,編譯的過程中一定要有耐心喲!
整個源碼編譯完成之後,如果提示如下信息,那麼Congratulations, you are successful!!!

3. Linux中make, make install命令分別是什麼,用法

make是用來編譯的,它從Makefile中讀取指令,然後編譯。

make install是用來安裝的,它也從Makefile中讀取指令,安裝到指定的位置。

用法:

1、make:

這一步就是編譯,大多數的源代碼包都經過這一步進行編譯(當然有些perl或python編寫的軟體需要調用perl或python來進行編譯)。

如果 在 make 過程中出現 error ,就要記下錯誤代碼(注意不僅僅是最後一行),然後可以向開發者提交 bugreport(一般在 INSTALL 里有提交地址)。

或者系統少了一些依賴庫等,這些需要自己仔細研究錯誤代碼。

make 的作用是開始進行源代碼編譯,以及一些功能的提供,這些功能由他的 Makefile 設置文件提供相關的功能。

比如 make install 一般表示進行安裝,make uninstall 是卸載,不加參數就是默認的進行源代碼編譯。

make 是 Linux 開發套件裡面自動化編譯的一個控製程序,他通過藉助 Makefile 裡面編寫的編譯規范進行自動化的調用 gcc 、ld 以及運行某些需要的程序進行編譯的程序。

一般情況下,他所使用的 Makefile 控制代碼,由 configure 這個設置腳本根據給定的參數和系統環境生成。

2、make install

這條命令來進行安裝(當然有些軟體需要先運行 make check 或 make test來進行一些測試),這一步一般需要你有 root 許可權(因為要向系統寫入文件)。

(3)源碼安裝中編譯命令為擴展閱讀

當我們在使用make命令時,常常會在make後面加上其他單詞,比如check,install,installcheck…這些單詞都是make的參數,我們稱之為「目標(targets)」。

最常見的幾個目標:

make all:編譯程序、庫、文檔等(等同於make)

make install:安裝已經編譯好的程序。復制文件樹中到文件到指定的位置

make unistall:卸載已經安裝的程序。

make clean:刪除由make命令產生的文件

make distclean:刪除由./configure產生的文件

make check:測試剛剛編譯的軟體(某些程序可能不支持)

make installcheck:檢查安裝的庫和程序(某些程序可能不支持)

make dist:重新打包成packname-version.tar.gz

4. ubuntu源碼編譯安裝cmake-2.8.10.2

ubuntu源碼編譯安裝cmake-2.8.10.2從cmake官網下載最新的cmake版本,筆者下載的是cmake-2.8.10.2.tar.gz,地址http://www.cmake.org/cmake/resources/software.html
www.dnjsb.com
1、解壓cmake-2.8.10.2.tar.gztar
-xvf
cmake-2.8.10.2.tar.gz2、在cmake-2.8.10.2同級目錄下新建一個編譯目錄mkdir
cmake-bulidcd
cmake-build3、編譯cmake.././bootstrap
www.dnjsb.com
注意:可能會出現如下錯誤:/usr/lib/libstdc++.so.6:
version
'GLIBCXX_3.4.15'
not
found這個是因為筆者更新ubuntu
gcc編譯器導致的。解決方法:a.
查看libstdc++.so.6支持GLIBCstrings
/usr/lib/libstdc++.so.6
|
grep
GLIBCoutput:GLIBCXX_3.4GLIBCXX_3.4.1GLIBCXX_3.4.2GLIBCXX_3.4.3GLIBCXX_3.4.4GLIBCXX_3.4.5GLIBCXX_3.4.6GLIBCXX_3.4.7GLIBCXX_3.4.8GLIBCXX_3.4.9GLIBCXX_3.4.10GLIBCXX_3.4.11GLIBCXX_3.4.12GLIBCXX_3.4.13GLIBC_2.0GLIBC_2.3GLIBC_2.1GLIBC_2.1.3GLIBC_2.3.2GLIBC_2.2GLIBCXX_FORCE_NEWGLIBCXX_DEBUG_MESSAGE_LENGTH發現裡面沒有支持GLIBCXX_3.4.15。在這里,筆者ubuntu中安裝的gcc
4.7ls
/usr/local/gcc-4.7.2/output:bin
include
lib
libexec
share將/usr/local/gcc-4.7.2/lib/目錄下面的libstdc++.so.6和libstdc++.so.6.0.17拷貝到/usr/lib/目錄下面:sudo
cp
/usr/local/gcc-4.7.2/lib/libstdc++.so.6
/usr/lib/sudo
cp
/usr/local/gcc-4.7.2/lib/libstdc++.so.6.0.17
/usr/lib/sudo
rm
-f
/usr/lib/libstdc++.so.6.0.13刪除libstdc++.so.6舊的鏈接,建立新的鏈接,同時刪除libstdc++.so.6.0.13:sudo
ln
-sf
/usr/lib/libstdc++.so.6.0.17
/usr/lib/libstdc++.so.6sudo
rm
-f
/usr/lib/libstdc++.so.6.0.13至此搞定,現在我們回到編譯cmake中。重復剛才的命令:
www.dnjsb.com
.././bootstrap注意:此時我們仍然在cmake-bulid目錄下面。上面成功以後就執行如下2個命令:makesudo
make
install查看cmake是否安裝成功:cmake
--versionoutput:cmake
version
2.8.10.2恭喜你,安裝成功了。

5. linux下軟體編譯安裝 前提和方式

在linux系統中,如果要用源代碼包進行編譯安裝,就需要用到gcc這個工具,一般安裝系統時默認選擇都有這個工具包。可以用命令rpm -qa | grep gcc來看看是否安裝gcc。
源代碼包安裝一般分三步:
1.解壓之後,進入解壓的目錄中,運行./configure,後面還可以加參數,具體情況根據不同的軟體來設定。
2.運行make進行編譯,如果系統版本還有其他條件都支持的話,不會報什麼錯。
3.運行make install進行安裝就可以了。

6. 如何編譯安裝php擴展

一開始安裝PHP的時候,我們並不知道需要哪些擴展,所以只有等到我們真正用到的時候才想辦法去安裝。
安裝PHP擴展最簡單的辦法就是
sudo apt-get install php5-xxx

但有的時候並非我們所願,源裡面並沒有我們需要的擴展,這時候就需要我們下載源碼自己編譯安裝了。
這篇文章中我將介紹在本地Linux平台下編譯安裝PHP擴展的方法。
現在網站根目錄下創建 index.php 列印基本的配置信息,以驗證我們是否安裝成功。
配置編譯環境
我們需要安裝一些編譯必須的庫,還有 php-dev 版本
Ubuntu
sudo apt-get install php5-dev php5-mysql gcc libpcre3-dev

Fedora
sudo yum install php-devel php-mysqlnd gcc libtool

RHEL
sudo yum install php-devel php-mysql gcc libtool

Suse
yast2 -i php5-pear php5-devel php5-mysql gcc

安裝擴展
PHP有兩種可供安裝的擴展:一種是PHP原生的但是默認沒有安裝的,另一種的第三方開發的擴展。
下面依次介紹兩種擴展的安裝方法:
安裝之前我們需要一份和當前機器上相同版本的PHP源碼
cd code
wget http://cn2.php.net/distributions/php-5.5.9.tar.bz2
tar xvjf php-5.5.9.tar.bz2
cd php-5.5.9

前往此處 下載相應的源碼包。
在 /ext 目錄下面可以看到所有PHP原生的擴展。
安裝原生擴展
以 PHP-intl 為例,這是PHP國際化的擴展。
為了安裝這個擴展我們需要先安裝ICU 庫
sudo apt-get install icu-devtools icu-doc libicu-dev libicu52 libicu52-dbg

ICU 安裝成功之後進入/ext/intl 目錄:
cd intl
phpize
./configure --enable-intl
make
sudo make install

下面解釋一下上面的每個命令:
phpize : 是用來擴展php擴展模塊的,通過phpize可以建立php的外掛模塊
./configure --enable-intl: 配置編譯環境,相當於告訴編譯器編譯PHP源碼的時候加上intl這個擴展。
make: 將會把源碼編譯成 intl.so
make install : 將會把 intl.so 移動到當前安裝的 PHP 的擴展目錄。
接下來我們要做的就是在php.ini中啟用這個擴展,這一步將會在最後給出示例。
安裝第三方擴展
將以這個 擴展為例,這個擴展主要實現了PHP識別條形碼的功能。
先安裝必要的依賴
sudo apt-get install pkg-config

git clone https://github.com/mongodb/mongo-php-driver
cd mongo-php-driver
phpize
./configure
make
sudo make install

將會生成一個文件,將其拷貝到PHP的擴展目錄下面。
啟用擴展
在php.ini中啟用擴展的方式有很多:
直接在php.ini文件中添加 extension=mongo.so,這是最簡單直接的方法。
也可以單獨建一個ini文件,然後在php.ini中包含這些文件就可以了。
下面介紹一下第二種方法:
cd `/etc/php5/mods-available`

這個目錄里可以放新建的ini文件,然後執行
sudo touch mongo.ini
echo "extension=mongo.so" | sudo tee -a mongo.ini
sudo touch intl.ini
echo "extension=intl.so" | sudo tee -a intl.ini

上面的命令將會創建ini文件,並且寫如相應的配置信息。
然後執行下面的命令啟用擴展即可(需要安裝 php5enmod 工具):
sudo php5enmod mongo
sudo php5enmod intl

如果未安裝 php5enmod 工具,則需要手動配置:
ln -s /etc/php5/mods-available/mongo.ini /etc/php5/cli/conf.d/mongo.ini
ln -s /etc/php5/mods-available/intl.ini /etc/php5/cli/conf.d/intl.ini
ln -s /etc/php5/mods-available/mongo.ini /etc/php5/fpm/conf.d/mongo.ini
ln -s /etc/php5/mods-available/intl.ini /etc/php5/fpm/conf.d/intl.ini

最後在執行一下重啟操作就可以了:
sudo service nginx restart
sudo service php5-fpm restart

7. linux下編譯程序源碼,執行make命令時報錯如圖,有沒有什麼頭緒或者建議,謝謝大神了

linux下所有軟體源碼包的安裝方式一般都會在readme中有詳細的官方說明,對於gerbv如下圖所示

上述大部分內容對linux下所有軟體包的安裝都適用。

8. 怎麼源碼編譯依賴LAPACK和ATLAS庫的NumPy包

1. GCC版本要求
使用較新版本的GCC工具集(盡量不低於v4.7)且集成有gfortran編譯器。
備注1:這里大寫的"GCC"是指GNU Compiler Collection,它除包含C語言編譯器gcc外,還包含很多其它語言的編譯器(如g++/gfortran等)
備注2:3.x版的的C語言編譯器gcc會由於某些頭文件缺失導致編譯atlas庫報錯
備注3:若GCC工具集中沒有gfortran編譯器,則編譯lapack庫時會遇到一些莫名其妙的錯誤(因為lapack是用fortran編寫的),好在GCC4.7及以上版本中已經集成了gfortran編譯器
在GCC版本符合要求的前提下,臨時將其加入環境變數PATH並設置動態庫查找路徑:
[plain] view plain
在CODE上查看代碼片派生到我的代碼片
$ export PATH=/home/slvher/tools/gcc48/bin/:$PATH
$ export LD_LIBRARY_PATH=/home/slvher/tools/gcc48/lib64:/home/slvher/tools/gcc48/lib
備注4:在當前shell會話中臨時設置LD_LIBRARY_PATH可以保證編譯過程中正確搜索到GCC庫,但最好不要設置到.bash_profile中,因為那樣會影響其它程序的查找路徑,可能會踩到坑。
備注5:這里提到的GCC的版本要求及環境變數設置如果沒有出差錯,那麼下面的編譯會比較順利,否則會遇到各種編譯/鏈接問題,後續我會用一篇筆記來記錄這些踩坑的過程及遇到這些詭異問題時的分析思路,這里不贅述。
2. 編譯LAPACK和ATLAS庫
lapack是用fortran開發的經過特別優化的線性代數計算庫;atlas也是一個優化過的線性代數計算庫,它提供了BLAS庫的全部API(包括C介面和Fortran介面),還實現了lapack庫中的部分函數,atlas在編譯過程中會根據機器的配置參數來調整科學計算函數的參數,以便在該機器上達到更好的計算性能。
初看起來,需要分別編譯lapack和atlas兩個庫,所幸的是,atlas庫支持編譯時自動編譯lapack庫,因此,只需正確完成atlas庫的編譯配置,編譯atlas庫就可以了。
下面是編譯atlas/lapack庫的主要步驟。
1) 分別從官網下載lapack源碼包和atlas源碼包,我下載的是目前的最新版lapack-3.5.0.tgz及atlas3.10.2.tar.bz2
2) 解壓atlas源碼壓縮包:tar -jxvf atlas3.10.2.tar.bz2
3) cd ATLAS && mkdir BLDdir && cd BLDdir
4) 執行configure命令以配置編譯參數
[plain] view plain
在CODE上查看代碼片派生到我的代碼片
$ ../configure --shared -b 64 --prefix=/home/slvher/tools/scikit-learn-virtualenv/dep-libs/sklearn-libs --with-netlib-lapack-tarfile=/home/slvher/tools/scikit-learn-virtualenv/dep-libs/lapack-3.5.0.tgz
其中,--shared表明要編譯atlas共享庫(configure會自動在編譯命令中插入"-fPIC"參數,無需在這里顯式指定);--prefix指定編譯結果的安裝路徑;--with-netlib-lapack-tarfile表明編譯atlas庫時會用相同的編譯器及編譯/鏈接參數自動編譯lapack庫,這里指定lapack源碼包的路徑後,configure運行後會自動解壓lapack源碼並將其拷貝至BLDdir/src/lapack/reference/這個目錄下。
5) configure運行完後,BLDdir目錄下生成了Make.inc文件,該文件中設置了眾多編譯參數(如查找路徑、編譯產出路徑、編譯器、傳給編譯器的參數,等等),BLDdir子目錄下很多模塊的Makefile都會include這個Make.inc,包括源碼獨立的lapack包,可見,這個Make.inc文件可以達到統一編譯環境的目的。
6) make build
7) make check
8) make ptcheck
9) make install
如果上述一系列命令均執行成功,那麼編譯完成的*.a和*.so庫會安裝到--prefix參數指定的路徑下,這些庫的頭文件也會被拷貝到安裝路徑下的include目錄。
至此,ATLAS和LAPACK庫均完成編譯,其中LAPACK庫是.a靜態庫,ATLAS庫是.so動態庫。事實上,ATLAS的動態庫中已經包含了LAPACK靜態庫的所有符號和代碼。
下面可以開始編譯依賴LAPACK和ATLAS庫的NumPy包了。
3. 編譯優化版NumPy包
前提:官網下載NumPy源碼包並解壓,這里以目前最新版numpy-1.9.2.tar.gz為例進行說明。
1) cd至解壓目錄numpy-1.9.2
2) cp site.cfg.example site.cfg
3) 在site.cfg中配置atlas項,其中include_dirs和library_dirs是atlas庫安裝路徑下的include和lib目錄
[plain] view plain
在CODE上查看代碼片派生到我的代碼片
[atlas]
atlas_libs = lapack,f77blas,cblas,atlas
library_dirs = /home/slvher/tools/scikit-learn-virtualenv/dep-libs/sklearn-libs/lib
include_dirs = /home/slvher/tools/scikit-learn-virtualenv/dep-libs/sklearn-libs/include
4) python setup.py config
5) python setup.py build --fcompiler=gnu95 ## 指定Fortran編譯器為GCC4.8工具集中的gfortran
6) python setup.py install
正常情況下,build成功後,install會把編譯產出拷貝到當前python解釋器安裝路徑下的lib/python2.7/site-packages目錄中。
此時,可以通過下面的例子來查看NumPy包的配置情況:
[python] view plain
在CODE上查看代碼片派生到我的代碼片

>>>importnumpyasnp
>>>np.__config__.show()
atlas_3_10_blas_threads_info:
libraries=['lapack','f77blas','cblas','atlas']
library_dirs=['/home/slvher/tools/scikit-learn-virtualenv/dep-libs/sklearn-libs/lib']
define_macros=[('HAVE_CBLAS',None),('ATLAS_INFO','"\"3.10.2\""')]
language=c
include_dirs=['/home/slvher/tools/scikit-learn-virtualenv/dep-libs/sklearn-libs/include']
lapack_opt_info:
libraries=['tatlas','lapack','f77blas','cblas','atlas']
library_dirs=['/home/slvher/tools/scikit-learn-virtualenv/dep-libs/sklearn-libs/lib']
define_macros=[('ATLAS_INFO','"\"3.10.2\""')]
language=f77
include_dirs=['/home/slvher/tools/scikit-learn-virtualenv/dep-libs/sklearn-libs/include']
blas_opt_info:
libraries=['lapack','f77blas','cblas','atlas']
library_dirs=['/home/slvher/tools/scikit-learn-virtualenv/dep-libs/sklearn-libs/lib']
define_macros=[('HAVE_CBLAS',None),('ATLAS_INFO','"\"3.10.2\""')]
language=c
include_dirs=['/home/slvher/tools/scikit-learn-virtualenv/dep-libs/sklearn-libs/include']
openblas_info:
NOTAVAILABLE
openblas_lapack_info:
NOTAVAILABLE
atlas_3_10_threads_info:
libraries=['tatlas','lapack','f77blas','cblas','atlas']
library_dirs=['/home/slvher/tools/scikit-learn-virtualenv/dep-libs/sklearn-libs/lib']
define_macros=[('ATLAS_INFO','"\"3.10.2\""')]
language=f77
include_dirs=['/home/slvher/tools/scikit-learn-virtualenv/dep-libs/sklearn-libs/include']
lapack_mkl_info:
NOTAVAILABLE
blas_mkl_info:
NOTAVAILABLE
mkl_info:
NOTAVAILABLE
也可以用具體的例子來驗證其功能是否正常:
[python]viewplain
在CODE上查看代碼片派生到我的代碼片
>>>importnumpyasnp
>>>np.arange(15).reshape(3,5)
array([[0,1,2,3,4],
[5,6,7,8,9],
[10,11,12,13,14]])
>>>
>>>a=np.arange(15).reshape(3,5)
>>>a
array([[0,1,2,3,4],
[5,6,7,8,9],
[10,11,12,13,14]])
>>>type(a)
<type'numpy.ndarray'>
>>>
>>>
>>>fromnumpy.linalgimport*
>>>b=np.array([[1.0,2.0],[3.0,4.0]])
>>>b
array([[1.,2.],
[3.,4.]])
>>>b.transpose()
array([[1.,3.],
[2.,4.]])
>>>inv(b)
array([[-2.,1.],
[1.5,-0.5]])
>>>

9. Linux中源碼編譯安裝程序包括哪些基本步驟

第一步:創建編譯腳本
進入到源碼目錄 執行 ./configure --prefix=/.../.....(--prefix=後面是想要安裝到的目錄)
第二部:編譯
執行 make
第三部:安裝
執行 make install
當然上面這幾部都是最基本的步驟,如果想優化編譯,要在./configure 後面加參數,或者configure之後手動修改Makefile文件 如O2(優化等級) FLAGS 等編譯參數的修改。
--------------------------------------------------------------------------------------------------------------
以上都是源碼包的編譯
如果是自己寫的C代碼 直接 用gcc編譯即可。
例如 編譯test.c
執行 gcc -o test test.c即可將test.c編譯為可執行的文件 test

自己打出來的 要採納啊!

10. 新人求教 驅動源碼編譯安裝

1、安裝scons
(1) 下載python2.7, 使用x86_32位,因為scons只有32位安裝包可用;
(2) 下載scons2.3.0;
(3) 安裝python 和 scons, 將C:\Python27\Scripts寫入PATH;
(4) 下載安裝pywin32 ,It is recommended you install pywin32 if you want to do parallel builds (scons -j)

2、安裝boost庫(1.49版本).
解壓後雙擊bootstrap.bat,生成bjam.exe後,cd到目錄c:\boost下,(將boost_1_49更名為boost了)編譯boost。
編譯命令:C:\boost>bjam variant=release --with-filesystem --with-thread --with-date_time --with-program_options threading=multi toolset=msvc-10.0 link=static runtime-link=static address-model=32
這是使用VS2010環境編譯的release版本,編譯完成後,生成C:\boost\stage\lib文件夾,下面有6個lib庫:

如果要編譯成debug版本,使用命令:bjam variant=debug --with-filesystem --with-thread --with-date_time --with-program_options threading=multi toolset=msvc-10.0 link=static runtime-link=static address-model=32

編譯完成後,生成C:\boost\stage\lib文件夾,下面有10個lib庫和dll:

此處為MongoDB文檔中對於編譯boost庫的要求原文:
When using bjam, MongoDB expects
variant=debug for debug builds, and variant=release for release builds
threading=multi
link=static runtime-link=static for release builds
address-model=64 for 64 bit(64位的話,把32換為64)。link=static runtime-link=static,boost需要編譯成靜態庫,因為mongodb只會去鏈接boost的靜態庫
address-model=64在win7 64環境下此項必須,不加在編譯mongodb的c++ client時會出現鏈接錯誤。

3、下載mongo2.4.6源碼 http://www.mongodb.org/downloads官網下載
編譯Mongoclient.lib

cmd命令提示符下,cd到解壓後的文件目錄,例如我放在了E盤,E:\mongodb-src-r2.4.6,輸入命令:
scons –-dd --32 mongoclient.lib // build C++ client driver library
Add --64 or --32 to get the 64- and 32-bit versions, respectively. Replace --release with --dd to build a debug build.
編譯後在mongodb\build\win32\32\dd\client_build\生成mongoclient.lib.

4、測試程序
就用Mongodb自帶的例子吧,使用VS2010打開E:\mongodb-src-r2.4.6\src\mongo\client\examples中的simple_client_demo.vcxproj,編譯,會提示生成simple_client_demo.sln,保存。
使用debug模式,配置工程環境:打開工程->屬性,配置Configuration Properties下的VC++ Directories,頭文件路徑添加C:\boost,Lib庫路徑添加boost的lib,以及mongodb client的lib:
C:\boost\stage\lib

E:\mongodb-src-r2.4.6\build\win32\32\dd\client_build
進入C/C++下面的Code Generation,將Runtime Library設置為Multi-threaded Debug (/MTd)
進入Linker下面的Input,設置Additional Dependencies,添加ws2_32.lib,psapi.lib,Dbghelp.lib,mongoclient.lib
將E:\mongodb-src-r2.4.6\build\win32\32\dd\mongo\base下生成的error_codes.h和error_codes.cpp文件,拷貝到E:\mongodb-src-r2.4.6\src\mongo\base目錄下。
ok,編譯、運行.

5、問題解決
error LNK2038: mismatch detected for '_MSC_VER': value '1700' doesn't match value '1600' in error_codes.obj
1>mongoclient_d.lib(dbclient.obj) : error LNK2038: mismatch detected for '_MSC_VER': value '1700' doesn't match value '1600' in error_codes.obj
1>mongoclient_d.lib(assert_util.obj) : error LNK2038: mismatch detected for '_MSC_VER': value '1700' doesn't match value '1600' in error_codes.obj
1>mongoclient_d.lib(jsobj.obj) : error LNK2038: mismatch detected for '_MSC_VER': value '1700' doesn't match value '1600' in error_codes.obj
1>mongoclient_d.lib(status.obj) : error LNK2038: mismatch detected for '_MSC_VER': value '1700' doesn't match value '1600' in error_codes.obj
1>mongoclient_d.lib(mutexdebugger.obj) : error LNK2038: mismatch detected for '_MSC_VER': value '1700' doesn't match value '1600' in error_codes.obj

VS的版本不匹配,lib是在更高級的版本中編譯生成的,而使用的時候,是在低級版本中使用的,所以出現了不匹配的錯誤。例如,我在VS2010 SP1和VS2012的環境下編譯的,而使用是在VS2010上使用,所以在編譯時,出現了以上問題。

1>mongoclient.lib(stacktrace.obj) : error LNK2001: unresolved external symbol __imp_SymCleanup
1>mongoclient.lib(stacktrace.obj) : error LNK2001: unresolved external symbol __imp_SymGetMoleInfo64
1>mongoclient.lib(stacktrace.obj) : error LNK2001: unresolved external symbol __imp_SymInitialize
1>mongoclient.lib(stacktrace.obj) : error LNK2001: unresolved external symbol __imp_StackWalk64
1>mongoclient.lib(stacktrace.obj) : error LNK2001: unresolved external symbol __imp_SymFromAddr

在工程依賴庫中添加Dbghelp.lib

其它問題,看看你手頭的編譯器、編譯出來的boost庫版本、mongoclient.lib的版本,是否對應好了。

閱讀全文

與源碼安裝中編譯命令為相關的資料

熱點內容
游戲開發程序員書籍 瀏覽:841
pdf中圖片修改 瀏覽:268
匯編編譯後 瀏覽:473
php和java整合 瀏覽:828
js中執行php代碼 瀏覽:440
國產單片機廠商 瀏覽:57
蘋果手機怎麼設置不更新app軟體 瀏覽:284
轉行當程序員如何 瀏覽:492
蘋果id怎麼驗證app 瀏覽:864
查看手機命令 瀏覽:953
抖音反編譯地址 瀏覽:225
如何加密軟體oppoa5 瀏覽:233
java從入門到精通明日科技 瀏覽:94
拆解汽車解壓視頻 瀏覽:597
新版百度雲解壓縮 瀏覽:592
android上下拉刷新 瀏覽:880
centos可執行文件反編譯 瀏覽:838
林清玄pdf 瀏覽:271
黑馬程序員java基礎 瀏覽:284
awss3命令 瀏覽:359