コマンドiperf-sの実行中に、そのスローエラーが発生します
iperf3:シンボルルックアップエラー:iperf3:未定義のシンボル:iperf_create_pidfile
よろしく。、
Surendar
+1
Ubuntu15.10で確認済み
おそらく、iperf3共有ライブラリ(デフォルトのようにそのように構築されている場合)がローダーの検索パスに含まれていませんか? 一部のUNIXライクなシステムでは、 ldconfig
実行してローダー検索パスをリロードできます。
それでも問題が解決しない場合は、使用しているOSとディストリビューション、iperfのインストール方法(ソースとmake install
からコンパイル、パッケージ化された実行可能ファイルなど)などの情報を提供してください。 。
Ubuntu 14.04を使用していますが、同じエラーが発生し、 ldconfig
実行しようとしましたが、役に立ちません。
パッケージ化された実行可能ファイルからインストールされたiperf。
DebianJessieのクリーンインストールでも同じ問題が発生します。 gitから複製されました。 ./configure && make && make install
。
そこで、絞り込みました。 iperf_create_pidfile
でのみ未定義になる理由は、おそらくaptからiperf3
パッケージをインストールしたためであり、それを削除すると、ライブラリが取り残されました( dpkg --purge iperf3
実行している場合でも) libiperf.so.0
が使用されていました。 これにはいくつかの未定義がありました。
root<strong i="10">@foobar</strong>:~/iperf3-git# ldd -d -r /usr/local/bin/iperf3
linux-vdso.so.1 (0x00007ffec4390000)
libiperf.so.0 => /usr/lib/x86_64-linux-gnu/libiperf.so.0 (0x00007fe7f4e6a000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fe7f4abf000)
/lib64/ld-linux-x86-64.so.2 (0x000055aa474ef000)
undefined symbol: iperf_delete_pidfile (/usr/local/bin/iperf3)
undefined symbol: iperf_create_pidfile (/usr/local/bin/iperf3)
undefined symbol: iperf_get_test_one_off (/usr/local/bin/iperf3)
解決策は非常に簡単でした。
make uninstall
make clean
./configure
make -j20
make install
rm /usr/lib/x86_64-linux-gnu/*iperf*
ldconfig
そしてvoilá;
root<strong i="17">@foobar</strong>:~/iperf3-git# /usr/local/bin/iperf3 --version
iperf 3.1
Linux foobar 4.2.8-1-pve #1 SMP Fri Feb 26 16:37:36 CET 2016 x86_64
Optional features available: CPU affinity setting, IPv6 flow label, TCP congestion algorithm setting, sendfile / zerocopy
make install
は、ライブラリが更新されるように、おそらくldconfig
呼び出す必要があります。
回避策を投稿してくれた@jallakimに感謝します! 私はかつてldconfig
自動的に実行する方法を理解しようとしていましたが、すべてのプラットフォームがldconfigを使用するわけではないため複雑になりました(特にMacOSは同様の機能に対して他のコマンドを実行します)。 この正確な問題については、GitHub課題追跡システムにまだ問題がある可能性があります。
libiperf0を削除すると、この問題は解決しました。
apt-get purge libiperf0
@tingvold 、回避策は私の状況で機能します。 つまり、基本的には、最初にアンインストールしてからインストールする方法です。 最も重要なオプションは「ldconfig」だと思います
最も参考になるコメント
libiperf0を削除すると、この問題は解決しました。
apt-get purge libiperf0