Facebook warpdrive build - D编程语言

时间:2014-05-10 18:17:54

标签: c++ facebook c-preprocessor d

最近,facebook开源warp, C / C ++预处理器。 https://github.com/facebook/warp

我正在尝试使用dmd构建它并遇到一些构建错误。 我为dmd编译器下载了dmd.2.065.0.zip - dmd2 / linux / bin64 / dmd 我也看到了一堆库,例如libphobos2.a

然后,当我构建warp时,我看到ld的一些错误,一直抱怨phobos2.a无法找到。我将LD_LIBRARY_PATH导出到存储此库但没有运气的目录。

我在详细模式下编译,并没有提供更多信息。

命令:

/path/to//building_stuff/dmd2/linux/bin64/dmd -O -inline -release -ofwarp cmdline.d constexpr.d context.d directive.d expanded.d file.d id.d lexer.d loc.d macros.d main.d number.d outdeps.d ranges.d skip.d sources.d stringlit.d textbuf.d -v

错误摘录:

function  textbuf.Textbuf!char.Textbuf.length
function  textbuf.Textbuf!char.Textbuf.resize
gcc warp.o -o warp -m64 -L/path/to/building_stuff/dmd2/linux/bin64/../lib64 -Xlinker --export-dynamic -l:libphobos2.a -lpthread -lm -lrt 
/usr/bin/ld: cannot find -l:libphobos2.a
collect2: ld returned 1 exit status
--- errorlevel 1

我希望这里的D语言专家,或者那些了解经线的人都能给我一些暗示。

我不像经线要求那样在CentOS上。我想知道这是不是原因。 我没有使用gcc 4.7.x作为warp的要求,但是,对我来说,可能找不到库,看起来不像我有的旧gcc的问题。

我在redhat5.5机器上使用4.1 gcc。

4 个答案:

答案 0 :(得分:1)

CentOS基本上是一个RedHat,所以一切都应该可行。正如人们评论的那样,您真正的问题是您的链接行中的-l:libphobos2.a。请记住,GNU / Linux允许使用文件名中的冒号,因此:libphobos2.a是一个完全有效的文件,GNU ld无法在库搜索路径中找到它。

答案 1 :(得分:0)

请注意,他们在编译时添加了一个make文件,我设法使用" make -j"并且只编辑make中的dmd命令行。

答案 2 :(得分:0)

将“libphobos2.a”重命名为“lib:libphobos2.a.a”

答案 3 :(得分:0)

我遇到了ld版本2.17的类似问题,但版本2.20这个'l:< libfilename>'有点语法很好。