如何为 window 构建基于 linux 的程序?
how to build a linux-based program for window?
我想为 windows 构建一个完全独立的基于 inux 的程序。
我尝试通过命令
在 ubuntu 上使用 mingw64
./configure --host=x86_64-w64-mingw32 --disable-shared --enable-static LDFLAGS="-L /usr/local/lib/"
make
但是失败了
src/libcork/posix/subprocess.c:14:24: fatal error: sys/select.h: No such file or directory
#include <sys/select.h>
^
compilation terminated.
这里是 github 中的源代码:
https://github.com/shadowsocks/simple-obfs
那么如何为 windows 构建完全独立的程序?
我可以试试 cygwin 或 msys2 吗?
更新:
我找到了另一个源代码,已经移植了。
但是当我用
编译它时
./configure --host=x86_64-w64-mingw32 CFLAGS="-static" LDFLAGS="-static"
我得到一个可执行文件,它仍然需要 libssp-0.dll
。
那么如何使 libssp
成为静态链接?
我认为 select.h
中的功能在 MinGW 版本的 gcc 上不可用,因为它在 Windows 平台上不可用。如果您正在构建旨在构建在 Windows 上的东西,那么您可能会发现可以将一些选项传递给 configure
,从而启用一种不同的、Windows 友好的方式实现同样的目标。如果您构建的东西只是真正打算在 Linux 上使用,那么您可能就不走运了。在这种情况下,您的选择实际上等于:
修改代码,使其不需要 select.h
。 Windows 套接字 API 中可能已经存在某些功能,但实现方式略有不同。然而,它也可能不是,在这种情况下你将不得不做一些工作。
使用比 MinGW 功能更丰富的 Windows 兼容层。 Cygwin 可能工作得很好,Windows 子系统 Windows 10 中的 Linux 也可能工作得很好。但是,这些方法中的 none 相当于构建了一个 "standalone" 应用程序,因为他们需要一些支持基础设施。
我想为 windows 构建一个完全独立的基于 inux 的程序。 我尝试通过命令
在 ubuntu 上使用 mingw64./configure --host=x86_64-w64-mingw32 --disable-shared --enable-static LDFLAGS="-L /usr/local/lib/"
make
但是失败了
src/libcork/posix/subprocess.c:14:24: fatal error: sys/select.h: No such file or directory
#include <sys/select.h>
^
compilation terminated.
这里是 github 中的源代码: https://github.com/shadowsocks/simple-obfs
那么如何为 windows 构建完全独立的程序? 我可以试试 cygwin 或 msys2 吗?
更新:
我找到了另一个源代码,已经移植了。 但是当我用
编译它时./configure --host=x86_64-w64-mingw32 CFLAGS="-static" LDFLAGS="-static"
我得到一个可执行文件,它仍然需要 libssp-0.dll
。
那么如何使 libssp
成为静态链接?
我认为 select.h
中的功能在 MinGW 版本的 gcc 上不可用,因为它在 Windows 平台上不可用。如果您正在构建旨在构建在 Windows 上的东西,那么您可能会发现可以将一些选项传递给 configure
,从而启用一种不同的、Windows 友好的方式实现同样的目标。如果您构建的东西只是真正打算在 Linux 上使用,那么您可能就不走运了。在这种情况下,您的选择实际上等于:
修改代码,使其不需要
select.h
。 Windows 套接字 API 中可能已经存在某些功能,但实现方式略有不同。然而,它也可能不是,在这种情况下你将不得不做一些工作。使用比 MinGW 功能更丰富的 Windows 兼容层。 Cygwin 可能工作得很好,Windows 子系统 Windows 10 中的 Linux 也可能工作得很好。但是,这些方法中的 none 相当于构建了一个 "standalone" 应用程序,因为他们需要一些支持基础设施。