最近,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。
答案 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>'有点语法很好。