我可以在Windows上编译为linux编写的任何c代码吗?

时间:2011-08-31 05:28:53

标签: c operating-system

如果我想在其他操作系统上编译该程序,或者让我说在Windows上如何做到这一点,看看我是否已经在linux机器上的c中创建了一个c程序。

如果我在该程序中使用了像pthread.h这样的os特定内容,该怎么办?

有没有直接的方法可以这样做。?

4 个答案:

答案 0 :(得分:3)

  

如果我想在其他操作系统上编译该程序,或者让我说在Windows上如何做到这一点,看看我是否已经在Linux机器上的c中创建了一个c程序。?

然后我希望您注意哪些API可用于Windows,哪些不可用。这不是一个容易解决的问题。

正如您使用pthreads一样,Windows上没有与API兼容的替代品。本机API是CreateThread及其子级。如果必须保持源级别兼容性,则可以创建自己的#ifdef规则,包装器,也可以使用APR等第三方库。

答案 1 :(得分:1)

是的,有一种直接的方法:尝试编译,如果出现问题,请尝试找出原因:它是与编译器相关的差异还是与操作系统相关的。如果它与编译器有关,请修改新编译器的源代码(可能是VS,或者你可以只使用mingw)。如果它与操作系统相关,则需要端口代码,即修改它以适应新操作系统。

如果是pthread.h,有一个Pthreads-W32端口的pthreads到windows,你可以看一下。

答案 2 :(得分:0)

您不能使用Windows不附带的任何库,也不能使用Windows不能使用的库。但看起来有针对Windows的pthread实现。您应该检查一下Windows使用的库的等价物。

答案 3 :(得分:0)

如果您的程序依赖于Unix库,最好的办法是使用Cygwin。 Cygwin是Windows上的Unix兼容层,附带了一系列移植软件,包括bash,gcc,make以及在Linux机器上找到的大多数其他实用程序。也可以使用pthreads端口。