4

这是我在这里的第一篇文章,如果我做错了什么,请原谅我。

这几天我一直在为此苦苦挣扎,最后我决定承认并寻求帮助。简而言之,我想在 windows 上使用 mingw 编译 libnoise (1.0.0)。但是,似乎缺乏在线可用的信息。

我已经从网站下载了源文件并按照 INSTALL 文本文件中的说明运行命令“CXXFLAGS='-O3 -fomit-frame-pointer' make”(我从 mingW shell 执行) .

此操作的输出可以在链接中找到(由于它的长度,我已经链接而不是发布输出)。如果我省略 CXXFLAGS 或 fomit-frame-pointer 标志,或者如果我使用 mingw32-make 或 make all 命令,输出不会有太大变化。

它似乎在抱怨丢失的文件,例如

Makefile:56: ../src/latlon.d: 没有这样的文件或目录

虽然我可以确认它们存在于所述目录中。它也在抱怨别的事情

c:/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../libmingw32.a(main.o):main.c:(.tex t.startup+0xa7 ): 未定义引用_WinMain@16' collect2.exe: error: ld returned 1 exit status make[1]: *** [libnoise.so.0.3] Error 1 make[1]: Leaving directory /c/users/gibbons/desktop/libnoisesrc-1.0.0/noise/src ' make: * [src] 错误 2

我不知道如何解决这些问题。除了一篇博客文章之外,谷歌搜索并没有真正出现。这也没有真正的帮助,因为我不确定“重命名库名称以赋予它适当的 DLL 扩展名。全部替换即可。”这意味着什么。

任何帮助或建议将不胜感激,我真的很困惑!:-/

干杯

额外信息:我正在运行 Windows 7、64 位和(想想)我在 mingW 4.7.0 上。

4

1 回答 1

3
  1. 别担心No such file or directory。这很正常,请看底部的src/Makefile解释。
  2. 永远不要使用 target clean。我无法从中恢复过来。
  3. 删除所有方向来构建.so文件。这些是 linux 文件,不能由 mingw 构建。打开所有Makefiles 并注释掉包含.so的行,以下行除外:

    libnoise: libnoise.so libnoise.a libnoise.la
    all: libnoise.a libnoise.la libnoise.so.0.3

    在上面的行中,只删除包含.so. 这将阻止构建.so目标。

在 中找到静态库src/.libs/libnoise.a

构建 DLL会有点困难,因为作者使用 Visual Studio 构建它。没有用于构建 dll 的 makefile 目标。需要多准备几行来处理目录中的文件win32并从中生成库。

于 2012-11-08T07:31:09.637 回答