【发布时间】:2012-11-22 21:05:05
【问题描述】:
我正在使用 StarRuby (https://github.com/hajimehoshi/starruby) 库,并尝试将最新版本编译为 .so 文件,以便在我的 ruby 项目中进行链接。
但是,在获取编译所需的库,运行extconf.rb文件制作Makefile后,发现C代码不符合C90格式,更像需要C99格式。
这是一个问题,因为 mingw 不使用 C99,而且我卡在 Windows 上。
如何将上述源代码编译成 .so 以供 Windows 上的 ruby 使用?
生成文件:http://pastebin.com/raw.php?i=i2ANc82g
可以在此处找到 makefile 的确切输出:http://pastebin.com/raw.php?i=VpbmyLgy
自从回滚到 libpng 1.2:http://pastebin.com/raw.php?i=TqdeADHY
【问题讨论】:
-
你能用
V=1运行make,这样我们就可以看到正在使用的编译器命令行是什么? -
你有很多关于混合声明和代码的警告,但我看到的唯一错误是
./src/texture.c:329:18: error: dereferencing pointer to incomplete type(以及此后不久的一些行)。那条线上是什么? -
@MichaelBurr:尝试设置一些详细程度时,它会输出相同的内容。
-
@DanielFischer:
if (0 < infoPtr->num_palette && hasPalette) {完整的源代码可在问题中链接的 git 存储库中找到。 -
存在 C90 警告是因为虽然您有
-std=c99,但您也有-Wdeclaration-after-statement。这可能来自编译 Ruby 时使用的配置。尝试将行CONFIG['warnflags'].gsub! /-Wdeclaration-after-statement/, ''添加到extconf.rb以删除警告。