2012-02-07 3 views
3

Я пытаюсь скомпилировать OpenEXR с cygwin, но у меня проблемы с этим.Скомпилировать OpenEXR в cygwin

Что я сделал до сих пор:

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

мне это нужно, потому что это OpenEXR нуждается. Он работает нормально, и он создает в/usr/local три папки: bin, include\OpenEXR и lib.

Затем я перехожу к 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.

Как только я понял, я понял ответ на вашу проблему. Вы предоставляете файл include, но не самую библиотеку, следовательно, 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

Спасибо;) Я не знаю, почему это происходит, но теперь решена –

+1

Просто напоминание, чтобы кто-нибудь еще найти это, обратите особое внимание на файл, указанный здесь (cygHalf-6.dll). Вероятно, это будет другой номер версии, поэтому найдите файл и получите имя файла правильно. –

Смежные вопросы