ページ更新: 2013-08-13 (火) (1801日前)

関連:

(2009-02-28)

[編集]

情報源 #

(2017-05-09 追記)

[編集]

メモ #

[編集]

Cygwin 1.7.23, Cygwin64 1.7.23 #

(2013-08-13)

configure を実行したところ、config.guess などを差し替える必要がある表示された:

$ ./configure
checking for a BSD-compatible install... /usr/bin/install -c
...
This script, last modified 2005-02-10, has failed to recognize
the operating system you are using. It is advised that you
download the most up to date version of the config scripts from

    ftp://ftp.gnu.org/pub/gnu/config/

If the version you run (./config.guess) is already up to date, please
send the following data and any information you think might be
pertinent to <config-patches@gnu.org> in order to provide the needed
information to handle your system.

config.guess timestamp = 2005-02-10
...

そこで、ftp://ftp.gnu.org/pub/gnu/config/README にしたがい、config.guess と config.sub を更新した:

$ wget 'http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD' -O config.guess
$ wget 'http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD' -O config.sub

あらためて configure, make, make install を実行する。問題なし:

$ ./configure
...
checking build system type... x86_64-unknown-cygwin
checking host system type... x86_64-unknown-cygwin
configure: creating ./config.status
config.status: creating Makefile
config.status: creating compat/Makefile
config.status: creating doc/Makefile
config.status: creating include/Makefile
config.status: creating src/Makefile
config.status: creating man/Makefile
config.status: creating config.h
config.status: config.h is unchanged
config.status: executing depfiles commands
config.status: executing include/iperf-int.h commands
config.status: creating include/iperf-int.h : _IPERF_INCLUDE_IPERF_INT_H
config.status: include/iperf-int.h is unchanged

$ make
$ make install
[編集]

Cygwin 1.7.7-1, iperf-2.0.5 #

(2010-10-27)

OSはWindows XP Professional SP3 (32bit) を用いた。

Cygwinとmingwパッケージのバージョン:

$ cygcheck -cd | egrep "cygwin|mingw"
base-cygwin          2.1-1
cygwin               1.7.7-1
cygwin-doc           1.7-1
gcc-mingw-core       20050522-1
gcc-mingw-g++        20050522-1
mingw-runtime        3.18-1

Browse Iperf Files on SourceForge.net から、iperf-2.0.5.tar.gz を入手した。

ソースコードを展開して、configure (--build=mingw32を指定)、make

$ tar zxf iperf-2.0.5.tar.gz
$ cd iperf-2.0.5
$ ./configure --build=mingw32
$ make clean all

バージョン表示:

$ ./src/iperf.exe -v
iperf version 2.0.5 (08 Jul 2010) pthreads

使用しているDLLの確認:

$ cygcheck ./src/iperf.exe
C:\setup\Iperf\iperf-2.0.5.tar\iperf-2.0.5\src\iperf.exe
  C:\cygwin\bin\cygwin1.dll             ★おや?
    C:\WINDOWS\system32\ADVAPI32.DLL
      C:\WINDOWS\system32\KERNEL32.dll
        C:\WINDOWS\system32\ntdll.dll
      C:\WINDOWS\system32\RPCRT4.dll
        C:\WINDOWS\system32\Secur32.dll
  C:\cygwin\bin\cyggcc_s-1.dll             ★おや?
  C:\cygwin\bin\cygstdc++-6.dll             ★おや?

インストールする (/usr/local/*)

$ make install

$ hash -r
$ which iperf
/usr/local/bin/iperf
[編集]

Cygwin 1.5.25-12, iperf-2.0.4でコンパイル #

mingw用にコンパイルしたが、cygwin1.dllが使われてしまう。動くからいいけど。

SourceForge.net: Iperf より、iperf-2.0.4.tar.gz (2008-04-08) を使用。

Cygwinとmingwパッケージのバージョン(たぶんちょっと古い):

$ cygcheck -cd | egrep "cygwin|mingw"
cygwin               1.5.25-12
cygwin-doc           1.4-4
gcc-mingw-core       20050522-1
gcc-mingw-g++        20050522-1
mingw-runtime        3.14-1

ソースコードを展開して、configure (--build=mingw32を指定)、make

$ tar zxf iperf-2.0.4.tar.gz
$ cd iperf-2.0.4
$ ./configure --build=mingw32
$ make clean all

試しに、CFLAGSとLDFLAGSを指定してみたが、コンパイル時に警告が、リンク時にエラーが発生したので、止めた:

$ ./configure --build=mingw32
$ make CFLAGS=-mno-cygwin CXXFLAGS=-mno-cygwin LDFLAGS=-mno-cygwin clean all

 :

../include/headers.h:90 から include されたファイル中,
                 error.c:53 から:
../include/config.win32.h:50:1: 警告: this is the location of the previous definition
if g++ -DHAVE_CONFIG_H -I. -I. -I..  -I../include -I../include  -Wall -mno-cygwin -MT delay.o -MD -MP -MF 
".deps/delay.Tpo" -c -o delay.o delay.cpp; \
       then mv -f ".deps/delay.Tpo" ".deps/delay.Po"; else rm -f ".deps/delay.Tpo"; exit 1; fi
../include/headers.h:90 から include されたファイル中,
                 ../include/Timestamp.hpp:63 から,
                 delay.cpp:53 から:
../include/config.win32.h:50:1: 警告: "Socklen_t" redefined
../include/headers.h:61 から include されたファイル中,
                 ../include/Timestamp.hpp:63 から,
                 delay.cpp:53 から:
../config.h:239:1: 警告: this is the location of the previous definition
In file included from delay.cpp:53:
../include/Timestamp.hpp: In member function `void Timestamp::setnow()':
../include/Timestamp.hpp:93: error: `gettimeofday' undeclared (first use this function)
../include/Timestamp.hpp:93: error: (未宣言変数については、それが関数内で最初に現われた時だけ報告されます。)
make[2]: *** [delay.o] エラー 1
make[2]: ディレクトリ `/d/user/desktop/Downloads/iperf-2.0.4.tar/iperf-2.0.4/compat' から出ます
make[1]: *** [all-recursive] エラー 1
make[1]: ディレクトリ `/d/user/desktop/Downloads/iperf-2.0.4.tar/iperf-2.0.4' から出ます
make: *** [all] エラー 2

gettimeofday はUNIXの関数で、MinGW (=Visual C++のランタイム) には、たぶん存在しない。

で、Windows環境用に include/gettimeofday.h と compat/gettimeofday.c が用意されているのだが、使われていない。

バージョン表示:

$ ./src/iperf.exe -v
iperf version 2.0.4 (7 Apr 2008) pthreads 

使用しているDLLの確認:

$ cygcheck ./src/iperf.exe
src/iperf.exe
  C:\cygwin\bin\cygwin1.dll             ★おや? cygwin1.dllに依存してる
    C:\WINDOWS\system32\ADVAPI32.DLL
      C:\WINDOWS\system32\KERNEL32.dll
        C:\WINDOWS\system32\ntdll.dll
      C:\WINDOWS\system32\RPCRT4.dll
        C:\WINDOWS\system32\Secur32.dll

動作確認:

他のホストで:
$ iperf -s

CygwinなPCで:
$ ./src/iperf -c 192.168.1.2
------------------------------------------------------------
Client connecting to koca, TCP port 5001
TCP window size: 8.00 KByte (default)
------------------------------------------------------------
[  3] local 192.168.1.4 port 1396 connected with 192.168.1.2 port 5001
write2 failed: Interrupted system call
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  65.2 MBytes  54.7 Mbits/sec