rust 错误:无法运行自定义构建命令为`tun-tap v0.1.4`

ig9co6j1  于 11个月前  发布在  其他
关注(0)|答案(1)|浏览(127)

我想在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。如何修复这个问题?

e0bqpujr

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并不是必须的。

相关问题