2012-02-07 105 views
3

我想用cygwin編譯OpenEXR,但我遇到了麻煩。在cygwin中編譯OpenEXR

什麼我迄今所做的:

cd ilmbase-X.X.X 
./configure 
make 
make install 
make check 

我需要這個,因爲它的OpenEXR需要它。它運行正常,並在/ usr/local三個文件夾中創建:bininclude\OpenEXRlib

然後我繼續OpenEXR的,這是我做的:

cd openexr-X.X.X 
./configure 

一切運行正常,但是當我做make它給了我下面的錯誤:

b44ExpLogTable.cpp:52:18: half.h: No such file or directory 

雖然我不是知道爲什麼發生這種情況,我可以做這個工作,圍繞它:

./configure CPPFLAGS=-I/usr/local/include/OpenEXR 

但日恩,當我打make拋出另一個錯誤,我在這裏stucked:

/usr/local/include/OpenEXR/half.h:511: undefined reference to `half::_toFloat' 
/usr/local/include/OpenEXR/half.h:511: undefined reference to `half::_toFloat' 
/usr/local/include/OpenEXR/half.h:481: undefined reference to `half::_eLut' 
/usr/local/include/OpenEXR/half.h:511: undefined reference to `half::_toFloat' 
/usr/local/include/OpenEXR/half.h:511: undefined reference to `half::_toFloat' 
/usr/local/include/OpenEXR/half.h:481: undefined reference to `half::_eLut' 
/usr/local/include/OpenEXR/half.h:499: undefined reference to `half::convert(int)' 
/usr/local/include/OpenEXR/half.h:481: undefined reference to `half::_eLut' 
/usr/local/include/OpenEXR/half.h:499: undefined reference to `half::convert(int)' 
/usr/local/include/OpenEXR/half.h:499: undefined reference to `half::convert(int)' 
collect2: ld returned 1 exit status 
<builtin>: recipe for target `b44ExpLogTable' failed 
make[1]: *** [b44ExpLogTable] Error 1 
make[1]: Leaving directory `/home/Andre/openexr-1.6.1/IlmImf' 
Makefile:313: recipe for target `all-recursive' failed 
make: *** [all-recursive] Error 1 

是否發生了這種事情的人?我已經搜索了很多,我找不到解決方案。我希望有人能幫幫忙。

回答

6

我知道這有點舊,但它幫助我找出-I開關。

一旦我找到了,我想出了你的問題的答案。您提供包含文件,但不提供庫本身,因此爲undefined reference。用途:

./configure CPPFLAGS="-I/usr/local/include/OpenEXR -L/usr/local/bin -lHalf-6"

-L提供了一個庫搜索目錄,而-l提供了一個庫鏈接到程序中。 -lHalf-6表示文件/usr/local/bin/cygHalf-6.dll

我不能告訴你爲什麼圖書館是它在哪裏,但它是。

您也可能會遇到與memset的另一個問題,這是解決這裏:http://lists.gnu.org/archive/html/openexr-user/2011-07/msg00002.html

+0

感謝;)我不知道爲什麼會這樣,但現在解決 – 2012-04-11 17:07:41

+1

只是提醒大家有沒有發現,請特別注意此處指定的文件(cygHalf-6.dll)。這可能是一個不同的版本號,所以找到該文件並獲得正確的文件名。 – 2014-02-07 21:49:46