繁体   English   中英

如果我使用linux库在C语言中编译程序,是否可以在Windows上使用它?

[英]If I compile a programme in C using linux library, can I use it on windows?

我只是想知道我是否可以使用在Windows上使用linux库在c中编译的程序,以及是否有可能将其转换为可以像Firefox或其他软件一样启动的exe

我看到可以使用交叉编译器来创建.exe文件,但是我使用的库如libcurlcsfml (已下载供Linux使用)。

如果您有任何建议,我很感兴趣。

TLDR:我可以使用Linux库在Linux上进行编译,以在.exe中使用专用Windows吗?如何?

简单的答案:否。如果您在不同平台上使用库,那是因为它们是在该操作系统上重新编译的。 C标准是跨体系结构,只要有针对该特定体系结构的编译器即可。 Windows使用所谓的PE(便携式可执行文件)文件格式。 它基本上是每个可执行文件开头的标头,其中提供了有关操作系统应在内存中的执行方式和位置的明确说明。 另一方面,Unix使用ELF。 MacOS使用Mach-o。 它们都带有有关应如何执行的说明。 因此,如果您可以在Linux上模拟PE格式,那么可以,您可以在Linux上运行可执行文件但在Windows上进行编译。 但是标准和跨平台库的想法是让您可以在几乎任何受支持的体系结构上运行代码。 它无法像Java一样在任何地方运行一次就进行编译。 但是您必须记住,JRE与编译器非常相似。 必须为每种特定体系结构编译该JRE,以理解和执行Java字节码。 因此,在任何地方编译代码都不错。

如果我没记错的话,curl和csfml是跨平台库。

除非您明确声称自己是交叉编译器,否则通常将无法正常工作。

而且,如果您运行的不是普通的控制台窗口/ DOS应用程序,则必须使用Windows特定功能编写代码。 在不同平台上,打开窗口,添加按钮等将有所不同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM