如果我想在其他操作系统上编译该程序,或者让我说在Windows上如何做到这一点,看看我是否已经在linux机器上的c中创建了一个c程序。
如果我在该程序中使用了像pthread.h这样的os特定内容,该怎么办?
有没有直接的方法可以这样做。?
答案 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端口。