2012-02-07 86 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