Проблемы с Io Addons под Cygwin - PullRequest
2 голосов
/ 13 июля 2011

Кто-нибудь сумел использовать Io аддоны типа Regex или OpenGL под Cygwin на Windows 7 32 bit?

Примечания:

  • Если это проблема ASLR, я хочу оставить включенной ASLR, поэтому я не проверял ее отключенной.
  • Мой Cygwin более новый, но не обязательно блеющий край (gcc (GCC) 4.3.4 20090804 (release) 1)

Полная история:

На моей стороне мне нужны некоторые настройки для компиляции и запуска Io в Cygwin. Чтобы увидеть мой процесс сборки, мелкие исправления и последние изменения, чтобы сделать библиотеки DLL доступными для Cygwin, см. http://permalink.de/tino/iocyg

Моя ОС - Windows 7 starter 32 bit, поэтому ASLR включено. Здесь речь идет о сборках под Cygwin, а не MinGW, так как под MinGW аддон Regex не компилируется в любом случае из-за отсутствия pcre lib по умолчанию.

В Cygwin мне не удалось использовать некоторые аддоны, такие как Regex или OpenGL, но из-за следующей ошибки (обратите внимание, что Cygwin ищет DLL s в поиске PATH, поэтому я должен добавить Обращаемся к нему, отсюда 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

Это можно отследить до использования Range addon в функции IoRegexMatches_searchFrom_withOptions_ с Regex/source/IoRegexMatches.c. И вот я сейчас застрял.

1 Ответ

1 голос
/ 18 октября 2011

Да, Regex доставлял мне проблемы, пока я не установил pcre .

Исправление:

  1. Установка pcre.
  2. Перекомпиляция Io.
...