2016-06-09 1 views
0

У меня есть эта программа называется threadtest.ml:Как связать модуль Thread в Cygwin?

Thread.join (Thread.create (fun _ -> print_string "Hello, World!\n")()) 

Я компиляция так:

$ ocamlc -thread unix.cma threads.cma -o threadtest threadtest.ml 
File "threadtest.ml", line 1: 
Error: Error on dynamically loaded library: /usr/lib/ocaml/stublibs/dllunix.so: flexdll error: cannot relocate RELOC_REL32, target is too far: 0xfffffffc020c7112 0x20c7112 

Это какая версия ocamlc у меня есть.

$ ocamlc -v 
The OCaml compiler, version 4.02.3 
Standard library directory: /usr/lib/ocaml 

Что я делаю неправильно? Я не нашел объяснений этой ошибки.

UPDATE:

Я также попытался перебазированием моей системы, следуя инструкции здесь: https://stackoverflow.com/a/37616907/714167

Но ничего, кажется, работает.

+0

Возможная Дубликат [Ошибка связывающей с OCaml модулем резьбы на Cygwin] (http://stackoverflow.com/questions/37647206/error-linking-with-ocaml-thread-module-on-cygwin) – camlspotter

+0

Вы должны улучшили свой предыдущий вопрос с помощью этого примера кода. – camlspotter

+0

Никто не ответил на этот вопрос, поэтому я перефразировал этот вопрос без информации о конкретном проекте, надеясь, что это побудит людей посмотреть на него. Я удалил предыдущий вопрос. –

ответ

1

Вы должны скомпилировать его с ocamlc -thread unix.cma threads.cma threadtest.ml

[EDIT] Как сказал camlspotter в комментариях, это может быть проблемой cygwin32, вот копия/паста для тех, кто, подобно мне, что никогда не читал комментарии (ждет OP, чтобы знать, если он работает):

camlspotter: Мой Cygwin OCaml не имеет никаких проблем увязывания вашего кода. Если бы я был вами, я бы очистил cygwin (и flexdll if exists) и начал все сначала. Если вы используете Cygwin32, возможно, миграция на Cygwin64 может решить вашу проблему: у меня было слишком много проблем с rebase, связанных с Cygwin32, и отказался от нее.

+1

Да, 'threads.cma' должен быть связан, но это еще одна проблема. Его проблема, возможно, связана с неправильной установкой flexdll или с коррупцией cygwin. – camlspotter

+0

Действительно. Я буду ждать его ответа, тогда ;-) – Lhooq

+0

Я думаю, что вы правы, но он все еще не исправил проблему связи. –