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

/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 ответ

Решение

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

Другие вопросы по тегам