Скомпилируйте 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