【问题标题】:Portable check for library图书馆的便携式支票
【发布时间】:2020-10-25 18:22:23
【问题描述】:

我正在尝试编译的项目有这个命令:

cc -xc++ -o/dev/null -lc++ -shared

但是我使用的是 PowerShell,它没有 /dev/null 的概念:

PS C:\> cc -xc++ -o/dev/null -lc++ -shared
C:/msys2/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../
x86_64-w64-mingw32/bin/ld.exe: cannot open output file /dev/null.exe: No such
file or directory

我尝试使用-o$null,但它只是创建了一个文件$null.exe。我也试过 这个:

PS C:\> cc -xc++ -o $null -lc++ -shared
cc.exe: fatal error: no input files

PowerShell 是否能够处理这种用例?或者,似乎目的 测试的目的是检查libc++ 是否存在。是否有另一种方法可以做 那个?

【问题讨论】:

  • 您可以test-path 为目录返回布尔值,我相信 PowerShell 中 /dev/null 的等价物将在产生输出的命令末尾添加 >> $null。这就是你要找的吗?
  • 参数 -o/dev/null 将由 cmd、PowerShell 和任何与 POSIX 兼容的 shell 逐字传递,所以这个问题的前提是有缺陷的:这不能是 PowerShell 特定的。 /dev/null (case-sensitively) 在类 Unix 平台上是空设备,而在 Windows 上是 NUL (case-insensitively)。

标签: powershell gcc msys2 dev-null


【解决方案1】:

这个问题似乎是 GCC 特有的。如果我get Clang,同样的命令 作品with nul:

cc -xc++ -onul -lc++ -shared

但如果我用 GCC 尝试同样的事情,我会得到:

C:/msys2/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../
x86_64-w64-mingw32/bin/ld.exe: nul.exe: final close failed: file truncated

我已发布bug 97574

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-13
    • 2012-09-15
    • 2011-04-11
    • 1970-01-01
    • 1970-01-01
    • 2016-02-05
    • 1970-01-01
    • 2016-12-21
    相关资源
    最近更新 更多