【发布时间】:2016-03-14 17:59:36
【问题描述】:
我有一个项目使用 FFI 与一些 C++ 代码进行交互。我将 GHC 升级到 7.10.3,现在项目不再编译了。
我必须使用一个相当旧的 gcc (3.3.6),它是用这一行调用的:
ghc ${DEFINES} ${INCLUDES} ${LIBDIRS} -pgmc /opt/gcc-3.3.6/bin/gcc MISCconfigTest.hs csrc/MISCconfig_c.cpp ${LIBRARIES}
自从ghc升级后,出现如下错误:
gcc: @/tmp/ghc19542_0/ghc_2.rsp: No such file or directory
有人知道出了什么问题吗?
编辑:
这是 ghc -v3 的输出:
Hsc static flags:
Created temporary directory: /tmp/ghc29748_0
*** C Compiler:
/opt/gcc-3.3.6/bin/gcc -D__OMNIORB4__ -D__x86__ -D__linux__ '-D__OSVERSION__=2' -DS2K_NAMESPACE -DUSE_NESTED_TEMPLATES -DIL_STD -D_REENTRANT -DS2K_LINUX -DUSE_STD_ALLOCATORS -DREDEFINE_STRING -DTCL_THREADS -x 'c++' csrc/MISCconfig_c.cpp -o /tmp/ghc29748_0/ghc_1.s -S '-D__GLASGOW_HASKELL__=710' -include /home/oswald/ghcs/ghc-7.10.3/lib/ghc-7.10.3/include/ghcversion.h -I/development/GECCOS_MUM/RELEASE3.1_W-03/core-stl-rep/include -I/development/GECCOS_MUM/RELEASE3.1_W-03/core-utilities-rep/include -I/development/GECCOS_MUM/RELEASE3.1_W-03/core-comm-rep/include -I/development/GECCOS_MUM/RELEASE3.1_W-03/model-cpd-rep/include -I/opt/omniORB-4.1.0/include/omniORB4 -I/opt/omniORB-4.1.0/include -I/development/GECCOS_MUM/RELEASE3.1_W-03/_generated -I/development/GECCOS_MUM/RELEASE3.1_W-03/../COTS/core-build-rep/include -I/home/oswald/ghcs/ghc-7.10.3/lib/ghc-7.10.3/base_HQfYBxpPvuw8OunzQu6JGM/include -I/home/oswald/ghcs/ghc-7.10.3/lib/ghc-7.10.3/integ_2aU3IZNMF9a7mQ0OzsZ0dS/include -I/home/oswald/ghcs/ghc-7.10.3/lib/ghc-7.10.3/include
gcc: @/tmp/ghc29748_0/ghc_2.rsp: No such file or directory
gcc: no input files
*** Deleting temp files:
Deleting: /tmp/ghc29748_0/ghc_2.rsp /tmp/ghc29748_0/ghc_1.s
Warning: deleting non-existent /tmp/ghc29748_0/ghc_1.s
*** Deleting temp dirs:
Deleting: /tmp/ghc29748_0
make: *** [MISCconfig] Error 1
我不知道ghc生成的中间文件的结构,但是看起来gcc得到了一个临时的.s文件,里面引用了.rsp文件?
【问题讨论】:
-
ghc -v3给你什么?特别是,您需要找到它正在调用的确切 gcc 命令。 -
查看上面编辑中的输出。
-
这可能只是权限问题吗?该文件/文件夹是否存在并且您可以访问它吗?如果您使用
-keep-tmp-files运行,它不会在最后删除临时文件。 -
我检查了,目录在那里,里面有一个文件 ghc_1.rsp。权限没问题。我查看了文件,它只是命令行选项。让我怀疑的是行中的@字符:
gcc: @/tmp/ghc9716_0/ghc_1.rsp: No such file or directory。临时文件在/tmp/ghc9716_0/中创建。