2015-06-11 11 views
1

Когда я пытаюсь скомпилировать программу с mlton, я получаю сообщение об ошибке.mlton дает ошибку, связанную с библиотекой

~/projects/serve-sml $ mlton server.mlb 
In file included from /usr/lib/mlton/include/platform.h:13:0, 
       from /usr/lib/mlton/include/common-main.h:16, 
       from /usr/lib/mlton/include/amd64-main.h:11, 
       from /tmp/file86PWQJ.1.c:110: 
/usr/lib/mlton/include/cenv.h:137:17: fatal error: gmp.h: No such file or directory 
#include "gmp.h" 
       ^
compilation terminated. 
call to system failed with exit status 1: 
gcc -std=gnu99 -c -I/usr/lib/mlton/targets/self/include -I/usr/lib/mlton/include -O1 -fno-common -fno-strict-aliasing -fomit-frame-pointer -w -m64 -o /tmp/fileg5D5To.o /tmp/file86PWQJ.1.c 
~/projects/serve-sml $ 

Согласно this, это означает, что я должен установить libgmp3-dev. Я запустил apt-get install libgmp3-dev и проверил, что файл /usr/include/x86_64-linux-gnu/gmp.h существует, но я все равно получаю ту же ошибку.

Любая идея, что я делаю неправильно?

ответ

1

Попробуйте ввести gcc -v -x c -E - в вашем терминале. Это напечатает путь поиска файла заголовка, который использует ваш компилятор C. Я получаю что-то вроде:

#include "..." search starts here: 
#include <...> search starts here: 
/Users/ml9951/include 
. 
/usr/local/include 
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/6.1.0/include 
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include 
/usr/include 
/System/Library/Frameworks (framework directory) 
/Library/Frameworks (framework directory) 

Так что, если у меня был gmp.h в /usr/include/x86_64-linux-gnu/, то мой C компилятор не нашел. Я бы предложил переместить ваш .h-файл в каталог, который находится в этом пути поиска (например, /usr/local/include в моем случае), или передать флаг -I /usr/include/x86_64-linux-gnu/, который потребует изменения скриптов сборки MLton. Скорее всего, вам придется делать то же самое с libgmp.a, когда приходит время, чтобы связать

+0

Исправить все раунд (и вы спрогнозировали проблему 'libgmp.a'). У меня работает 'nix', поэтому мой путь поиска был немного более запутанным. То, что я закончил, это symlinking '/ usr/lib/x86_64-linux-gnu/libgmp.a' в'/nix/store/nrxyygy0wqski1klq0305d3h523k41ps-glibc-2.20/lib' и '/ usr/include/x86_64-linux- gnu/gmp.h' в '/ nix/store/nrxyygy0wqski1klq0305d3h523k41ps-glibc-2.20/include' (оба из которых находятся на пути поиска, где вы показали мне, как найти). Теперь я могу скомпилировать, как ожидалось. Надеюсь, в результате этого ничего не взрывается ... – Inaimathi