Как скомпилировать RRDTool для Windows / Strawberry - PullRequest
0 голосов
/ 30 января 2012

Этот вопрос следует Как установить RRDTool :: OO на Strawberry Perl Я подумал, что было бы лучше создать новый вопрос, для ясности.

Резюме:

Требуется установить Perl-библиотеку RRDTool :: OO в Windows.Для этого требуется библиотека RRDTool.Это библиотека C и должна быть скомпилирована вручную.Первое, что нужно скомпилировать, это проект rrd.sln.Это работает гладко с Visual C ++. Второе, что нужно сделать, это скомпилировать RRDs.XS.Это не работает вообще с Strawberry Perl.

1) Я запустил perl ntmake-build, чтобы сгенерировать make-файл для Windows.2) Затем запустил dmake для компиляции модуля.Отображается куча ошибок компиляции.

Проблемы возникают из-за того, что файл ntmake-build использует статический путь, который не подходит для Strawberry Perl.Но даже после их исправления все равно выдаются ошибки:

RRDs.o: RRDs.c :(. Text + 0x971): неопределенная ссылка на `rrd_clear_error '

RRDs.o: RRDs.c :(. text + 0x985): неопределенная ссылка на `rrd_restore '

RRDs.o: RRDs.c :(. text + 0x9f7): неопределенная ссылка на` rrd_test_error'

RRDs.o: RRDs.c :(. text + 0xafd): неопределенная ссылка на `rrd_clear_error '

......................

collect2: ld вернул 1 состояние выхода

dmake.exe: код ошибки 129 при выполнении 'blib \ arch \ auto \ RRDs \ RRDs.dll'

Кто-нибудь когда-либоскомпилировал этот модуль на windows / Strawberry?

1 Ответ

0 голосов
/ 31 января 2012

Кажется, что невозможно - или сложно из-за нескольких хаков создать и применить к библиотеке - скомпилировать RRDs.XS на 64-битной версии Windows Server 2008. Вот несколько моментов:

  • Для RRDTool нет пакета PPM (по крайней мере, в репозиториях ActiveState).
  • В любом случае, Strawberry Perl x64 не внедряет инструмент PPM.
  • make-файлы RRDTools написаны для 32-битной установки AS (в основном из-за статического пути для библиотек perl, возможно, я пропустил другой статический путь - для библиотек C, например).

Это основные моменты, которые я могу перечислить, чтобы избежать чистой установки RRDTool на Strawberry Perl. Это означает, что модуль внешнего интерфейса RRDTool :: OO также нельзя использовать.

...