學(xué)習(xí)啦 > 學(xué)習(xí)電腦 > 操作系統(tǒng) > Linux教程 > 編譯make報(bào)錯(cuò)怎么辦

編譯make報(bào)錯(cuò)怎么辦

時(shí)間: 春健736 分享

編譯make報(bào)錯(cuò)怎么辦

  Linux下從源代碼下編譯安裝一個(gè)軟件有時(shí)候會(huì)報(bào)錯(cuò),遇到一些麻煩。那么編譯make報(bào)錯(cuò)怎么辦呢?下面跟著學(xué)習(xí)啦小編一起來了解一下吧。

  編譯make報(bào)錯(cuò)怎么辦

  在Ubuntu下安裝nox,make出錯(cuò)如下:

  》》》》 collect2: ld returned 1 exit status

  》》》》 make[3]: *** [nox_core] Error 1

  》》》》 make[3]: Leaving directory `/usr/nox/build/src‘

  》》》》 make[2]: *** [all-recursive] Error 1

  》》》》 make[2]: Leaving directory `/usr/nox/build/src’

  》》》》 make[1]: *** [all-recursive] Error 1

  》》》》 make[1]: Leaving directory `/usr/nox/nox13oflib/build‘

  》》》》 make: *** [all] Error 2經(jīng)過查資料,在參考文獻(xiàn)【1】發(fā)現(xiàn)是因?yàn)閚ox只能在boost1.50以上的版本才能編譯成功,而Ubuntu12.10版本的boost版本為1.42。所以要更新boost,采取的方法是到boost官網(wǎng)下載源碼并且編譯。

  下面列出簡(jiǎn)要的安裝過程

  安裝虛擬機(jī):OpenFlow1.3_BiangHoo

  IP:10.10.134.124

  OS: ubuntu 12.10LTS

  nox安裝:

  安裝相關(guān)依賴包:

  sudo apt-get install autoconf automake g++ libtool swig make git-core libboost-dev libboost-test-dev libboost-filesystem-dev libssl-dev libpcap-dev python-twisted python-simplejson python-dev

  還要安裝libboost-all-dev 和libttb-dev

  apt-get install libboost-all-dev libttb-dev

  然后到到boost官網(wǎng)下載源碼并且編譯。我下載的是1.55版本。然后將boost安裝到/usr/local/目錄下

  即

  。/bootstrap.sh --prefix=/usr/local/boost

  然后

  。/b2 install

  接著運(yùn)行l(wèi)dconfig使相關(guān)的庫生效

  然后下載nox源碼

  git clone git://github.com/noxrepo/nox

  cd nox

  。/boot.sh

  mkdir build

  cd build

  。。/。/configure --with-boost=/usr/local/boost #boost的安裝位置

  make

  make install

  即可安裝成功

  啟動(dòng)nox

  cd PATH_TO_NOX/nox/build/src

  。/nox_core -i ptcp:6633

  注意:編譯安裝一個(gè)軟件不會(huì)被系統(tǒng)的包管理系統(tǒng)記錄信息,這對(duì)于卸載和記錄軟件的行為都是不利的,建議您盡量使用打包好的包(.rpm .deb)

  下面說說編譯出現(xiàn)錯(cuò)誤的另一種方法:

  ./configure 錯(cuò)誤

  以下根據(jù)錯(cuò)誤出現(xiàn)頻率一一道來。第一個(gè)是經(jīng)常性出現(xiàn)錯(cuò)誤(是選擇性的)。()中表示可選,OR表示有一致的解決辦法,<>表示內(nèi)的文字由具體情況具體表示

  1 。(configure:) (error:) <somename> (<someversion> (or higher)) not found. (Please check your installation!) OR checking for <somename>… (configure:) (error:) not found. OR (configure:) (error:) <somename> (<someversion> (or newer)) is required to build <package-you’re-trying-to-compile>

  這表明<somename>的包的-dev或者-devel版本沒有安裝。請(qǐng)使用你發(fā)行版的包管理器(或者其他尋找和安裝包的方法)來尋找<somename>包并且安裝,如果可能的話安裝-dev 或者-devel版本

  如果-dev 或者-devel版本已經(jīng)安裝了,或者不存在,查看一下已經(jīng)安裝的版本號(hào)。它足夠高嗎?是不是比<someversion>要低,這樣你要常 識(shí)升級(jí)這些包。如果還不行的話,你可以嘗試編譯你要編譯軟件的以前的版本。老版本通常使用老版本的庫/程序

  如果./configure 提示找不到的是一個(gè)庫(通常提示lib<something>),并且你確定了已經(jīng)安裝了正確版本的庫,現(xiàn)在嘗試找到你的庫文件的位置。如果 庫文件路徑不包括在你的ld.conf 文件(通常是/etc/ld.conf或者是/etc/ld.so.conf)你應(yīng)該在此文件中添加,然后運(yùn)行l(wèi)dconfig命令(/sbin /ldconfig)需要注意的是:運(yùn)行l(wèi)dconfig 通常需要root權(quán)限。如果您不知道怎么辦,待回看一下下Make install錯(cuò)誤的第一點(diǎn)

  記:如果您沒有修改ld.conf文件的權(quán)限,您還可以將庫文件路徑添加到LD_LIBRARY_PATH變量中。當(dāng)然這是個(gè)笨方法,也不是最好的方法,但是當(dāng)你沒有其他選擇時(shí),你只好這么做了:

  export LD_LIBRARY_PATH=”$LD_LIBRARY_PATH:/your/library/directory”

  當(dāng)然,將您的庫文件路徑。注意當(dāng)您運(yùn)行編譯好的軟件時(shí),LD_LIBRARY_PATH必須包含您的庫文件夾路徑

  2。(configure:) (error:) cannot find header (file) <somename>.h OR (configure:) (error:) (header) (file) <somename>.h missing! OR <similar>

  configure腳本提示找不到“.h文件。這個(gè)錯(cuò)誤和上面的錯(cuò)誤是類似的,它也要求您安裝特定包的-dev或者-devel版本。然而,它并不 能清楚顯示你需要安裝哪個(gè)包,而<somename>會(huì)是一個(gè)特別廣泛的包,你可以嘗試在web上搜索<somename>.h 看它屬于那個(gè)包,然后嘗試用您系統(tǒng)的包管理器這安裝這個(gè)包(如果可能的話,同時(shí)安裝它的-dev或者-devel版本 )

  3。 (configure:) (error:) no acceptable cc found in <somedirectories>

  您沒有安裝gcc或者cc環(huán)境變量沒有設(shè)置。用包管理器檢查gcc是否已經(jīng)安裝,如果沒有的話,安裝它。如果安裝了嘗試用這個(gè)命令

  export CC=”/usr/bin/cc”

  如果要永久性的話,你可以將這個(gè)命令添加的/etc/profile中(當(dāng)任何用戶登陸進(jìn)來時(shí)會(huì)執(zhí)行這個(gè)文件里很多的命令)這樣,您以后就不要再設(shè)置了。

  4。(configure:) (error:) C++ preprocessor “/lib/cpp” fails sanity check

  您的g++包或者失蹤了或者conrrupted了,請(qǐng)檢查您的包管理器(或者其他尋找和安裝包的方法)去尋找g++和安裝相應(yīng)的包。注意,許多發(fā) 行版并不稱為g++,比如說,F(xiàn)edora,在yum源里用gcc-g++來表示g++包。如果您找不到g++,你可以尋找c++,cpp和/或者gcc

  5。(configure:) (error:) C++ preprocessor “CC (-E)” fails sanity check

  這個(gè)是libtool的一些特定有bug的版本,它使configure腳本檢查libtool支持的編輯器。這個(gè)最快的解決辦法就是安裝g++(解決辦法如上)

  上面就是Ubuntu安裝Nox后編譯make不通過的方法介紹了,如果你不會(huì)安裝Nox,又或者安裝好后無法通過make,那么可嘗試使用本文介紹的方法進(jìn)行解決。

647942