我想在rust中创建一个TCP服务器,但我得到了错误:“错误:无法为tun-tap v0.1.4
运行自定义构建命令”。我看到了其他一些有类似问题的帖子,但解决方案对我不起作用。
我有什么:操作系统:Windows CMake installed(版本:3.27.4)Rust(rustc 1.75.0-nightly)Cargo(cargo 1.75.0-nightly)
板条箱:tun-tap v0.1.4(已安装)
我试过更新rust,CMake和Cargo。更新后也清理了项目。这是我在网上发现的类似问题。我仍然有同样的问题。
This is the verbose build log from the project:
Fresh autocfg v1.1.0
Fresh cfg-if v0.1.10
Fresh lazy_static v1.4.0
Fresh winapi-build v0.1.1
Fresh semver-parser v0.7.0
Fresh futures v0.1.31
Fresh scopeguard v1.2.0
Fresh iovec v0.1.4
Fresh log v0.4.20
Fresh winapi v0.2.8
Fresh byteorder v1.5.0
Fresh semver v0.9.0
Fresh bytes v0.4.12
Fresh num_cpus v1.16.0
Fresh lock_api v0.3.4
Fresh fnv v1.0.7
Fresh cc v1.0.83
Fresh scoped-tls v0.1.2
Fresh maybe-uninit v2.0.0
Fresh crossbeam-utils v0.7.2
Fresh rustc_version v0.2.3
Fresh winapi v0.3.9
Fresh slab v0.4.9
Fresh tokio-io v0.1.13
Fresh memoffset v0.5.6
Fresh tokio-sync v0.1.8
Fresh tokio-executor v0.1.10
Fresh smallvec v0.6.14
Fresh kernel32-sys v0.2.2
Fresh net2 v0.2.39
Fresh ws2_32-sys v0.2.1
Fresh crossbeam-epoch v0.8.2
Fresh crossbeam-queue v0.2.3
Fresh tokio-codec v0.1.2
Compiling tun-tap v0.1.4
Fresh libc v0.2.149
Fresh miow v0.2.2
Fresh crossbeam-deque v0.7.4
Fresh tokio-timer v0.2.13
Fresh tokio-current-thread v0.1.7
Running `C:\Users\name\RustroverProjects\serverTCP\target\debug\build\tun-tap-ca08b732199efdac\build-script-build`
Fresh parking_lot_core v0.6.3
Fresh mio v0.6.23
Fresh tokio-threadpool v0.1.18
Fresh parking_lot v0.9.0
Fresh tokio-fs v0.1.7
Fresh tokio-reactor v0.1.12
Fresh tokio-udp v0.1.6
Fresh tokio-tcp v0.1.4
Fresh tokio v0.1.22
Fresh tokio-core v0.1.18
error: failed to run custom build command for `tun-tap v0.1.4`
Caused by:
process didn't exit successfully: `C:\Users\name\RustroverProjects\serverTCP\target\debug\build\tun-tap-ca08b732199efdac\build-script-build` (exit code: 1)
--- stdout
TARGET = Some("x86_64-pc-windows-msvc")
OPT_LEVEL = Some("0")
HOST = Some("x86_64-pc-windows-msvc")
cargo:rerun-if-env-changed=CC_x86_64-pc-windows-msvc
CC_x86_64-pc-windows-msvc = None
cargo:rerun-if-env-changed=CC_x86_64_pc_windows_msvc
CC_x86_64_pc_windows_msvc = None
cargo:rerun-if-env-changed=HOST_CC
HOST_CC = None
cargo:rerun-if-env-changed=CC
CC = None
cargo:rerun-if-env-changed=CRATE_CC_NO_DEFAULTS
CRATE_CC_NO_DEFAULTS = None
CARGO_CFG_TARGET_FEATURE = Some("fxsr,sse,sse2")
DEBUG = Some("true")
cargo:rerun-if-env-changed=CFLAGS_x86_64-pc-windows-msvc
CFLAGS_x86_64-pc-windows-msvc = None
cargo:rerun-if-env-changed=CFLAGS_x86_64_pc_windows_msvc
CFLAGS_x86_64_pc_windows_msvc = None
cargo:rerun-if-env-changed=HOST_CFLAGS
HOST_CFLAGS = None
cargo:rerun-if-env-changed=CFLAGS
CFLAGS = None
running: "C:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\BuildTools\\VC\\Tools\\MSVC\\14.37.32822\\bin\\HostX64\\x64\\cl.exe" "-nologo" "-MD" "-Z7" "-Brepro" "-W4" "-FoC:\\Users\\name\\RustroverProjects\\serverTCP\\target\\debug\\build\\tun-tap-e9c5c2c2bb1e0d64\\out\\src/tuntap.o" "-c" "src/tuntap.c"
tuntap.c
src/tuntap.c(10): fatal error C1083: Cannot open include file: 'sys/socket.h': No such file or directory
exit code: 2
--- stderr
error occurred: Command "C:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\BuildTools\\VC\\Tools\\MSVC\\14.37.32822\\bin\\HostX64\\x64\\cl.exe" "-nologo" "-MD" "-Z7" "-Brepro" "-W4" "-FoC:\\Users\\name\\RustroverProjects\\serverTCP\\target\\debug\\build\\tun-tap-e9c5c2c2bb1e0d64\\out\\src/tuntap.o" "-c" "src/tuntap.c" with args "cl.exe" did not execute successfully (status code exit code: 2).
字符串
我可以看到“sys/socket.h”不存在,因为windows是thrash。如何修复这个问题?
1条答案
按热度按时间e0bqpujr1#
tun-tap crate是为Unix设计的,它使用一个依赖于
sys/socket.h
的C文件,sys/socket.h
是Unix上套接字定义的正常位置,但在Windows上不存在。crate README文件记录了它只在Linux上测试过,在其他地方可能无法工作。就目前的情况而言,如果不修改代码,这个crate无法在Windows上进行功能编译。您可能希望在Linux的Windows子系统下尝试,尽管这对您是否有用取决于您想要做什么。
或者,你也可以在不需要tun-tap crate的情况下实现你的代码。在Rust中使用标准库或使用时雄(如果你喜欢使用JavaScript方法)来实现TCP服务器是完全可能的,而tun-tap crate并不是必须的。