【问题标题】:How to compile ioping with cygwin如何用cygwin编译ioping
【发布时间】:2016-03-02 18:39:37
【问题描述】:

在 Windows 7 x64 上使用 Cygwin。将“ioping”源提取到“/home”中

这是结果:

$ make
test ! -d .git || git describe --tags --dirty=+ | sed 's/^v//;s/-/./g' > version
cc -std=gnu99 -g -Wall -Wextra -pedantic -DVERSION=\"0.8\" -c -o ioping.o ioping.c
ioping.c: In function ‘get_device_size’:
ioping.c:602:3: error: #error no get disk size method
 # error no get disk size method
   ^
Makefile:46: recipe for target 'ioping.o' failed
make: *** [ioping.o] Error 1

尝试编译 Windows 可执行文件。我是 Cygwin 的新手。查看代码时似乎缺少预处理器。

来源:https://github.com/koct9i/ioping

编辑: 请参阅接受的 asnwer 用户“user3629249”和我的 cmets 以获得完整答案。

链接源的注释。 “自述文件”说它可以在 Windows 上运行,尝试在带有 SSD 的 Win 7 Ultimate 64 位上运行它,但出现“准备写入失败:没有错误”错误。

【问题讨论】:

  • 您真的不应该将 ioping 项目文件放在您的 home 目录中。相反,创建一个子目录。然后将项目文件放在该子目录中。
  • 当时为了简单起见,我很简洁,但我实际上把它放在了它自己的目录中,只是没有在上面显示,只是想指出看起来最相关的基本目录。但是对于后代来说是的,出于组织原因,它应该位于子目录中。有些人可能会认为是吹毛求疵,但这是一个很好的观点。

标签: c++ c gcc cygwin


【解决方案1】:

函数:get_device_size() 根据底层操作系统选择特定的 `ioctl()。

哪个ioctl() 取决于在make 时间定义的以下哪个

  1. __linux__
  2. __gnu_hurd__
  3. __FreeBSD__
  4. __FreeBSD_kernel__
  5. __DragonFly__
  6. __OpenBSD__
  7. __APPLE__
  8. __sun__
  9. __MINGW32__

浏览您的环境变量

我希望有一些环境变量,例如 __cygwin__

哪个环境变量似乎最有可能是合适的,将环境变量的名称添加到靠近ioping.c 文件顶部的预处理器块集中,并再次添加到get_device_size() 函数中。

【讨论】:

  • 对我来说最简单的解决方案是安装独立的“MinGW”。从我读到的内容来看,要让它与 Cygwin 一起工作需要一些工作(不想冒险弄乱 Cygwin 环境设置,因为我将它用于其他事情)感谢您的尝试。
  • 实用程序MinGW 用于Windows,而不是类似unix 的环境。唯一的变化是在 oping.c 文件中,而不是在 cygwin 环境中。但是,如果您不想更改 *.c 文件,则在 .bashrc 文件中添加类似于 set __linux__ export __linux__ 的语句
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-13
  • 1970-01-01
  • 1970-01-01
  • 2013-09-15
相关资源
最近更新 更多