Как собрать 64-битный OCaml 3.10.0 на Windows - PullRequest
0 голосов
/ 22 октября 2018

У меня есть исполняемый файл, скомпилированный с использованием OCaml 3.10.0 (ocaml-3.10.0-win-mgw.exe), который сталкивается с некоторой проблемой емкости, поскольку он 32-разрядный.Я хочу скомпилировать его как 64-битный исполняемый файл, и я попытался скомпилировать его с самой последней версией OCaml (4.0.7), но я столкнулся с кучей ошибок, потому что библиотека, которую я использую, построена с использованием 3.10.0.Я не знаю, как перестроить свои библиотеки в 4.0.7, и я не хочу.

Все, что я хочу знать, - это как скомпилировать OCaml 3.10.0 в 64-битной версии, чтобы я мог скомпилировать своипрограмма для генерации 64-битного исполняемого файла.Я использовал cygwin32 и следовал инструкциям по установке:

./configure
make world
make opt
make opt.opt
make install

Однако, это все равно устанавливает 32-битную версию.Я использовал cygwin64, но он все еще не удался и выдал следующую ошибку при компиляции ocamlrun.exe

gcc -DCAML_NAME_SPACE -O -fno-defer-pop -Wall -U_WIN32 -D_FILE_OFFSET_BITS=64 -D_REENTRANT   -c -o prims.o prims.c
gcc -fno-defer-pop -Wall -U_WIN32 -D_FILE_OFFSET_BITS=64 -D_REENTRANT  -o ocamlrun.exe \
      prims.o libcamlrun.a -lm   -lpthread
libcamlrun.a(io.o):io.c:(.text+0x26d): undefined reference to `setmode'
libcamlrun.a(io.o):io.c:(.text+0x26d): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `setmode'
libcamlrun.a(io.o):io.c:(.text+0x295): undefined reference to `setmode'
libcamlrun.a(io.o):io.c:(.text+0x295): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `setmode'
libcamlrun.a(io.o):io.c:(.text+0xa77): undefined reference to `setmode'
libcamlrun.a(io.o):io.c:(.text+0xa77): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `setmode'
collect2: error: ld returned 1 exit status
...