【问题标题】:Can I use glibc under windows?我可以在 windows 下使用 glibc 吗?
【发布时间】:2011-01-08 08:49:21
【问题描述】:

是否可以(或者会)在 windows 下使用 glibc(作为 msvcrt 的替代品)?我知道这是一个愚蠢的问题,会弹出像 cygwin 这样的答案,但我真的在问: 是否可以在 Windows 上链接到 glibc 并使用所有库函数,例如 msvcrt?

【问题讨论】:

    标签: c++ windows glibc


    【解决方案1】:

    可能存在一种解决方法:如果有人将http://0xef.wordpress.com/2012/11/17/emulate-linux-system-calls-on-windows/http://www.musl-libc.org/ 结合起来,并使用gcc 针对musl libc 而不是glibc 编译源代码。所以,我不明白为什么没有人为 Windows 编写这样的 glibc 模拟。 :-(

    【讨论】:

    • 感谢您提供有趣的参考。依靠处理异常似乎是一种相当的技巧,但是嘿,它可能工作得很好......非常整洁!
    • 其实我需要交叉编译只为Linux开发的开源库。他们不使用系统引用,而是使用现代 GCC 的 C 和 C++ 及其标准库调用——由 GLibC/musl-libc/newlib 实现的东西。我对 Visual Studio C 编译器感到失望。我想在 Linux/OS X 上使用 GCC 编译代码,然后将 OBJECT FILES 移动到 Windows 并将它们与使用 MSVC 编译的 Windows 平台特定应用程序代码链接。所以,我遇到的唯一问题 - 在 Windows 上,没有与 GCC 兼容的标准 C 库!!!
    • 否则,如何在Windows上编译这个:typedef uint8_t v16 __attribute__ ((vector_size (16)));等等,QFS Reed-Solomon fragment on GitHub
    • “Internet 上的性能测试”... 是的,这很棒。测试自己。并且不要将苹果与橙子进行比较:比较跨操作系统的二进制代码执行几乎毫无意义:最好将 MSVC 与 MinGW-w64 GCC 进行比较,我敢打赌 MinGW-w64 GCC 相当快;-)
    【解决方案2】:

    glibc 曾经在不同的 *nixes 上工作过一次,现在 glibc 是非常特定于 Linux 的。它肯定不会在 Windows 上运行。

    【讨论】:

    • 因此我们应该在每个平台上重写我们的开源代码,并用大量预处理器的#ifdefs 包围它......具有两个不同世界的跨平台是神话:一侧是 Windows 和 Linux, BSD、OS X、iOS 等(除此之外,它们都是跨平台的!)——另一方面。这是操作系统之战,导致大量低质量代码......
    • @BrianHaak 您的声明与 glibc 无关。 Glibc 只是实现标准 c 函数 (以及其他一些改动) 的众多库中的一个(尽管是最流行的库之一)。就您使用标准 c 函数而言,您不需要依赖于平台的#ifdefs。您在此处的另一条评论中的示例是使用 GCC 的扩展,特别是 α)与库无关,并且 β)这样的代码通常不受欢迎,除非作者有真正令人信服的理由。
    猜你喜欢
    • 2011-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-09
    • 1970-01-01
    • 2023-03-03
    • 2012-10-26
    • 2011-01-16
    相关资源
    最近更新 更多