2016-03-14 24 views
1

我偶爾想用mingw(在windows上)編譯源代碼。我打開MSYS,輸入./configure,和它說MinGW msys軟件包未找到:一般建議如何進行

checking for...xxxxxx 

有我的第一個問題:

  • 哪裏MinGW的檢查?
  • 它檢查什麼? .dll,.a,.o。,...什麼?

系統有時有像

configure: error: Package requirements <ogg >= 1.3> were not met: 
No package 'ogg' found. 

好一個錯誤,那麼我谷歌和發現「您可以輸出默認查找目錄」這樣好了,我鍵入gcc -print-search-dirs,看看目錄列表,例如C :/ mingw/lib,C:/ mingw/lib/gcc,...

這些文件夾包含.a -files。猜猜看,其中一些還包含libogg.a。那爲什麼抱怨呢?也許版本號?不,我下載了最新的源代碼並對其進行編譯,並將.a文件放入目錄中。同樣的錯誤。它讓我瘋狂!請給一些建議做什麼。

回答

1

傳統,通常,當您要配置的需要來鏈接的 包,它至少在庫本身的存在和可用性,也 的頭文件檢查庫中的./configure腳本檢查(S ),如果沒有它,編譯器不能使用庫的API。 (我通常說,因爲任何給定的./configure檢查 實際上是由程序包維護人員編程的,它與你的編譯器無關)。

檢查的libfoobar存在和可用性一般不會意味着./configure檢查搜索文件系統爲libfoobar.dlllibfoobar.a,或什麼的。這意味着./configure檢查只是在安裝libfoobar時,嘗試使用適當的命令編譯並鏈接樣本程序與libfoobar

往往過於(逐漸),一個./configure支票庫libfoobar調用 pkg-config工具來嘗試 檢索使用正確的編譯器和連接器選項與libfoobar。爲了成功嘗試,必須在文件系統中的標準 位置找到與該庫包相關聯的pkg-config元數據 文件,即foobar.pc,例如, /usr/lib/pkgconfig/usr/share/pkgconfig

對於庫,再加上它的頭,加上其pkg-config元數據(如果有的話) 所有可用的./configure,有必要安裝發展包 的libfoobar,而不是在基本包。開發包 通常具有與基本包相同的名稱,但添加了例如-dev-devel組件,例如,libfoobar-dev

如果./configure檢查失敗與以下形式的錯誤:

No package 'foobar' found. 

這意味着支票試圖檢索pkg-config元數據 foobar並沒有被發現。這通常是因爲開發libfoobar-dev沒有安裝,即使libfoobar是。

相關問題