【发布时间】:2020-07-04 15:27:09
【问题描述】:
我有一个在 linux 上编写的 C 程序,我希望能够在 window 上运行和开发。该程序对posix/linux库有一些外部依赖,所以我猜我也需要在windows下编译这些库。我对 linux 工作流程很陌生,也没有 C 和编译器方面的专家。我知道 cygwin 和/或 msys2 和/或 mingw-w64 之类的东西可能是我需要的,但我不确定如何让它以对我有意义的方式工作。
我的程序看起来像这样(仅显示相关部分),目前在我的 ubuntu linux VM 下运行:
// Build:
// gcc -o disc-identifier main.c `pkg-config --cflags --libs glib-2.0 libmirage libisofs-1`
//
// Run:
// disc-identifier test_image.nrg
#include <glib.h>
#include <mirage/mirage.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <string.h>
#include <limits.h>
#include <libisofs.h>
...
int main (int argc, char **argv)
{
...
}
我的理想目标是能够将其作为一个 Visual Studio 项目添加到解决方案中,并能够从 Visual Studio 中链接所需的依赖项(和编译)。然后我希望它编译成一个可移植的 32 位 x86 应用程序(可能带有一些随附的 dll 文件),不超过几 MB。但据我了解,我首先需要使用的库(glib、libmirage、libisofs)的 Windows 兼容版本,这让我有点不知所措。
【问题讨论】:
-
您的一个依赖项存在于 cygwin cygwin.com/packages/summary/libglib2.0-devel.html 下。最大的问题是程序的可移植性如何?如果你需要一个独立的 windows 程序,试试 mingw。
-
是的,我的目标是开发一个无需安装任何附加软件即可运行的独立程序(尽管不反对用它打包一个相对较小的 dll)。 libmirage 还需要 glib 与一堆其他依赖项一起构建(这是使这变得如此困难的一部分)。从我读过的库中不确定从哪里开始 mingw 可能需要对源代码进行重大更改才能正确编译,我真的不想这样做。
标签: c linux visual-studio cygwin mingw-w64