【问题标题】:Compile OpenEXR in cygwin在 cygwin 中编译 OpenEXR
【发布时间】:2012-02-29 04:50:12
【问题描述】:

我正在尝试使用 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 时,抛出另一个错误,我被困在这里:

/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

这种情况会发生在任何人身上吗?我已经用谷歌搜索了很多,但找不到解决方案。我希望有人可以提供帮助。

【问题讨论】:

    标签: compiler-errors cygwin cross-compiling openexr


    【解决方案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

    【讨论】:

    • 谢谢 ;) 我不知道为什么会这样,但现在解决了
    • 提醒其他发现此内容的人,请特别注意此处指示的文件 (cygHalf-6.dll)。这可能是不同的版本号,因此请找到该文件并获取正确的文件名。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多