我有一些代码可以使用 cygwin 在 Windows 机器上编译和运行。代码本机是 Linux,并在 cygwin 中使用 g++ 编译。
在该代码中,有几个库我想在不发布源代码的情况下重新分发。是否可以创建可移植的目标文件,这些文件可以移动到另一台安装了 cygwin 的 Windows 机器上并能够成功链接到它们?
我有一些代码可以使用 cygwin 在 Windows 机器上编译和运行。代码本机是 Linux,并在 cygwin 中使用 g++ 编译。
在该代码中,有几个库我想在不发布源代码的情况下重新分发。是否可以创建可移植的目标文件,这些文件可以移动到另一台安装了 cygwin 的 Windows 机器上并能够成功链接到它们?
MinGW 项目是Windows 的 GCC 套件(和其他工具)的一个端口。
如果您需要 Windows 下的编译器和/或 gcc,只需使用不带 Cygwin 的 MinGW 包。
如果您的代码链接到 Cygwin DLL(如果您在 Cygwin 中使用 g++ 构建它会这样做),那么您的代码会受到 GPL 的影响。如果您分发二进制文件,那么无论您是否自己分发 Cygwin 的任何部分,您都必须分发源代码。
当您构建链接到 GPL 代码的代码时,该链接代码也被强制在 GPL 下。不管你喜不喜欢,这就是 GPL 背后的重点。
您有两个选项可以分发您的二进制文件,而不必根据 GPL 提供源代码:
通过重写您的代码以不再需要 Cygwin 提供的 Linux 风格的 API,从而消除对 Cygwin 的依赖。
从 Red Hat 购买 Cygwin 许可证。这将赋予您链接 Cygwin DLL 并分发所有二进制文件的权利,而无需根据 GPL 发布您的源代码。
编辑:我还请您参考我对 Cygwin GPL 许可证相关问题的回答。