Cygwin 下 Io 插件的问题

发布于 2024-11-23 19:16:50 字数 1779 浏览 2 评论 0原文

有没有人设法在 Windows 7 32 位Cygwin 下使用 Io 插件,例如 RegexOpenGL /代码>?

注意:

  • 如果碰巧是 ASLR 问题,我想保持 ASLR 启用,所以我没有在关闭它的情况下进行测试。
  • 我的 Cygwin 是较新的,但不一定是前沿的 (gcc (GCC) 4.3.4 20090804 (release) 1)

完整的故事:

在我这边,我需要一些调整以在 Cygwin 下编译和运行 Io。要查看我的构建过程、小补丁和最终调整以使 DLL 可用于 Cygwin,请参阅 http ://permalink.de/tino/iocyg

我的操作系统是 Windows 7 starter 32 位,因此启用了 ASLR。这里是关于 Cygwin 下的构建,而不是 MinGW,因为在 MinGW 下,Regex 插件无论如何都不会编译,因为默认情况下缺少 pcre lib。

在 Cygwin 下,由于以下错误,我还没有设法使用一些插件,例如 RegexOpenGL (请注意,Cygwin 会查找 DLL在搜索PATH中,所以我必须向其中添加lib,因此是env):

$ env PATH="$PATH:/usr/local/lib" io
Io 20090105
Io> Regex
==>  Regex_0xcd1788:
   [output skipped]
Io> "e" matchesRegex("." asRegex)
IoState error: missing proto 0x52128c
IoState_protoWithInitFunction() Error: missing proto

谷歌搜索此错误我发现了一些与事实相关的帖子,Io 使用函数指针作为哈希来设置proto。该地址可能会在 DLL 情况下发生变化,从而导致散列中断。然而,查看 iovm/source/IoState.c 的代码,我无法理解这是否真的是问题的根源(还)。

更深入地说:

Io> "a" matchesOfRegex("o") anchored
==> nil
Io> "a" matchesOfRegex(".") anchored
IoState error: missing proto 0x1983128c
IoState_protoWithInitFunction() Error: missing proto

这可以追溯到 Regex/source/IoRegexMatches.c 函数 IoRegexMatches_searchFrom_withOptions_ 中使用 Range 插件。我现在被困在这里。

Has anybody managed to use Io addons like Regex or OpenGL under Cygwin on Windows 7 32 bit?

Notes:

  • If it happen to be an ASLR issue, I want to keep ASLR enabled, so I did not test with it turned off.
  • My Cygwin is a newer one, but not neccessarily bleading edge (gcc (GCC) 4.3.4 20090804 (release) 1)

The full story:

At my side I need some tweaks to compile and run Io under Cygwin. To see my build process, minor patches and final tweaks to make the DLLs available to Cygwin see http://permalink.de/tino/iocyg

My OS is Windows 7 starter 32 bit, so ASLR is enabled. This here is about builds under Cygwin, not MinGW, as under MinGW the Regex addon does not compile anyway due to missing pcre lib by default.

Under Cygwin I did not manage to use some Addons like Regex or OpenGL yet because of following error (note that Cygwin looks for DLLs in the search PATH, so I must add the lib to it, hence the env):

$ env PATH="$PATH:/usr/local/lib" io
Io 20090105
Io> Regex
==>  Regex_0xcd1788:
   [output skipped]
Io> "e" matchesRegex("." asRegex)
IoState error: missing proto 0x52128c
IoState_protoWithInitFunction() Error: missing proto

Googling for this error I found some posts relating to the fact, that Io uses the function pointer as hash to set the proto. This address might change in a DLL situation so the hash breaks. However looking into the code of iovm/source/IoState.c I am not able to understand if this really is the source of the problem or not (yet).

Going deeper into this:

Io> "a" matchesOfRegex("o") anchored
==> nil
Io> "a" matchesOfRegex(".") anchored
IoState error: missing proto 0x1983128c
IoState_protoWithInitFunction() Error: missing proto

This can be tracked down to the use of Range addon in function IoRegexMatches_searchFrom_withOptions_ from Regex/source/IoRegexMatches.c. And here I am currently stuck.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

[浮城] 2024-11-30 19:16:51

是的,在我安装 pcre 之前,Regex 给我带来了问题。

修复:

  1. 安装 PCRE。
  2. 重新编译 Io.

Yes, Regex gave me problems until I installed pcre.

Fix:

  1. Install pcre.
  2. Recompile Io.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文