Sml mlton给出了与库相关的错误
当我试图用Sml mlton给出了与库相关的错误,sml,mlton,Sml,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:
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 $
根据,这意味着我应该安装libgmp3-dev
。我已经运行了apt get install libgmp3 dev
,并验证了文件/usr/include/x86_64-linux-gnu/gmp.h
是否存在,但仍然收到相同的错误
知道我做错了什么吗?试着在终端中执行
gcc-v-xc-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)
#包括“…”搜索从这里开始:
#包括搜索从这里开始:
/用户/ml9951/include
.
/usr/本地/包括
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/./lib/clang/6.1.0/include
/Applications/Xcode.app/Contents/Developer/toolschains/xcodefault.xctoolschain/usr/include
/usr/包括
/系统/库/框架(框架目录)
/库/框架(框架目录)
因此,如果我在/usr/include/x86_64-linux-gnu/
中有gmp.h
,那么我的C编译器将找不到它。我建议将您的.h文件移动到此搜索路径上的目录中(在我的例子中,类似于/usr/local/include
),或者传入-I/usr/include/x86_64-linux-gnu/
标志,这需要修改MLton的构建脚本。很有可能,当需要链接时,您将不得不对libgmp.a
执行相同的操作全面纠正(并且您预测了libgmp.a
问题)。我已经运行了nix
,所以我的搜索路径有点复杂。我最后做的是将/usr/lib/x86_64-linux-gnu/libgmp.a
符号化为/nix/store/nrxygyy0wqski1kl0305d3h523k41ps-glibc-2.20/lib
,并将/usr/include/x86_64-linux-gnu/gmp.h
符号化为/nix/store/nrxygyy0wqski1kl0305d3h523k41ps-glibc-2.20/include
(这两个都在你告诉我如何查找的搜索路径上)。我现在可以按预期编译了。希望不会因此而爆炸。。。