一个朋友在solaris下安装iperf时不顺利,大致情况是编译过程出错,无法完成编译。他的安装环境,我无法得知,这里,我用虚拟机模拟安装。
系统环境:windows 7 ultimate x64 Edition /T9500 @ 2.60 GHz/4GB RAM/Vmware 6.5.3 build 185404/Sun Solaris 10 x86 /gcc 3.4.6 /iperf-2.0.4
一、安装系统
这个过程就省略了,实在没必要在这里介绍。
二、安装gcc
solaris默认安装是不带gcc的,所以,我们需要自行安装
1、系统环境准备(更改系统shell环境为bash,默认shell着实不好用)
a.由于系统默认的shell使用不太方便,所以将系统shell更改为bash。
# which bash
/usr/bin/bash
# usermod -s /usr/bin/bash root
b.建立系统 .profile文件:
# cp /etc/skel/local.profile /.profile
c.在.profile文件中添加如下内容
PATH=/usr/bin:/usr/local/bin:/usr/ucb:/etc:/usr/sbin:/usr/sfw/bin:/usr/ccs/bin:/opt/csw/bin:.
export PATH
export PS1=’u:w#’
d. 从Solaris 10安装光盘中安装如下工具包(这是为从网上下载gcc包做准备,如果已经下载好了,就不需要这一步了)
# pkgadd –d /cdrom/Solaris_10/Product SUNWwgetr
# pkgadd –d /cdrom/Solaris_10/Product SUNWwgetu
# pkgadd –d /cdrom/Solaris_10/Product SUNWwgetS
# pkgadd –d /cdrom/Solaris_10/Product SUNWgcmn
2.下载gcc软件(如果已经下载好了,则只需将这些包拷贝到solaris中即可)
#wget ftp://ftp.sunfreeware.com/pub/freeware/intel/10/gcc-3.4.6-sol10-x86-local.gz
#wget ftp://ftp.sunfreeware.com/pub/freeware/intel/10/libiconv-1.11-sol10-x86-local.gz
#wget ftp://ftp.sunfreeware.com/pub/freeware/intel/10/libgcc-3.4.6-sol10-x86-local.gz
#wget ftp://ftp.sunfreeware.com/pub/freeware/intel/10/libintl-3.4.0-sol10-x86-local.gz
注:第一个为gcc的应用程序,下面3个为gcc的库文件包
3.解压和安装
# gunzip gcc-3.4.6-sol10-x86-local.gz
# gunzip libiconv-1.11-sol10-x86-local.gz
# gunzip libgcc-3.4.6-sol10-x86-local.gz
# gunzip libintl-3.4.0-sol10-x86-local.gz
# pkgadd -d gcc-3.4.6-sol10-x86-local
# pkgadd -d libiconv-1.11-sol10-x86-local.gz
# pkgadd -d libgcc-3.4.6-sol10-x86-local.gz
# pkgadd -d libintl-3.4.0-sol10-x86-local.gz
4. 修改 .profile文件
在 .profile文件中增加如下内容
export LD_LIBRARY_PATH=/usr/local/lib:.
export CC=gcc
三、安装iperf-2.0.4
1. 解压iperf-2.0.4
# tar zxvf iperf-2.0.4.tar.gz
2. 配置iperf
# cd iperf-2.0.4
#./configure
这时候,部分输出如下(只截取了我们关心的部分):
then mv -f “.deps/tcp_window_size.Tpo” “.deps/tcp_window_size.Po”; else rm -f “.deps/tcp_window_size.Tpo”; exit 1; fi
g++ -Wall -O2 -o iperf -O2 -D_REENTRANT -pthread -DHAVE_CONFIG_H Client.o Extractor.o Launch.o List.o Listener.o Locale.o PerfSocket.o ReportCSV.o ReportDefault.o Reporter.o Server.o Settings.o SocketAddr.o gnu_getopt.o gnu_getopt_long.o main.o service.o sockets.o stdio.o tcp_window_size.o ../compat/libcompat.a -lsocket -lnsl
g++: unrecognized option `-pthread’
Undefined first referenced
symbol in file
sched_yield ../compat/libcompat.a(Thread.o)
ld: fatal: Symbol referencing errors. No output written to iperf
collect2: ld returned 1 exit status
*** Error code 1
make: Fatal error: Command failed for target `iperf’
Current working directory /Documents/iperf-2.0.4/src
*** Error code 1
The following command caused the error:
failcom=’exit 1′;
for f in x $MAKEFLAGS; do
case $f in
*=* | –[!k]*);;
*k*) failcom=’fail=yes’;;
esac;
done;
dot_seen=no;
target=`echo all-recursive | sed s/-recursive//`;
list=’compat doc include src man’; for subdir in $list; do
echo “Making $target in $subdir”;
if test “$subdir” = “.”; then
dot_seen=yes;
local_target=”$target-am”;
else
local_target=”$target”;
fi;
(cd $subdir && make $local_target)
|| eval $failcom;
done;
if test “$dot_seen” = “no”; then
make “$target-am” || exit 1;
fi; test -z “$fail”
make: Fatal error: Command failed for target `all-recursive’
Current working directory /Documents/iperf-2.0.4
*** Error code 1
make: Fatal error: Command failed for target `all’
仔细观察,我看到了这样一行“g++: unrecognized option `-pthread’”,这之前确实有一行代码用到了pthread这个参数。于是,从头再来:
#make clean
#./configure –disable-threads
# make
# make install
以上,一切顺利。
至此,在solaris 10上成功完成安装iperf-2.0.4。