Скомпилируйте OpenEXR в cygwin - PullRequest
       47

Скомпилируйте OpenEXR в cygwin

3 голосов
/ 07 февраля 2012

Я пытаюсь скомпилировать 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, появляется другая ошибка, и я застреваю здесь:

/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

Это случается с кем-нибудь?Я уже много гуглил и не могу найти решение.Я надеюсь, что кто-то может помочь.

1 Ответ

6 голосов
/ 14 марта 2012

Я знаю, что это немного устарело, но это помогло мне определить переключатель -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

...