CentOS7でpythonライブラリのインストール中にエラーが発生した。
$pip3 install python-hdf4 WARNING: Running pip install with root privileges is generally not a good idea. Try `pip3 install --user` instead. Collecting python-hdf4 Downloading https://files.pythonhosted.org/packages/2c/b3/051909e55bcb3639a25e4b6740a86f7f23caa34058916edcd2495a48ff1c/python-hdf4-0.9.2.tar.gz (123kB) 100% |████████████████████████████████| 133kB 1.4MB/s 中略 gcc -pthread -shared -Wl,-z,relro -g build/temp.linux-x86_64-3.6/pyhdf/hdfext_wrap.o -L -L/usr/lib -L/usr/local/lib -L/lib -L/usr/lib64 -lmfhdf -ldf -ljpeg -lz -lpython3.6m -o build/lib.linux-x86_64-3.6/pyhdf/_hdfext.cpython-36m-x86_64-linux-gnu.so /usr/bin/ld: -lmfhdf が見つかりません /usr/bin/ld: -ldf が見つかりません collect2: エラー: ld はステータス 1 で終了しました error: Command "gcc -pthread -shared -Wl,-z,relro -g build/temp.linux-x86_64-3.6/pyhdf/hdfext_wrap.o -L -L/usr/lib -L/usr/local/lib -L/lib -L/usr/lib64 -lmfhdf -ldf -ljpeg -lz -lpython3.6m -o build/lib.linux-x86_64-3.6/pyhdf/_hdfext.cpython-36m-x86_64-linux-gnu.so" failed with exit status 1 ---------------------------------------- Command "/usr/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-129etehm/python-hdf4/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-idn4m5wj-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-129etehm/python-hdf4/
内容はmfhdfとdfが見つからない、ということ。
ここで間違いをひとつ犯した。
/usr/lib64/hdfに似たようなライブラリがある。
$ls /usr/lib64/hdf libdf.a libhdf4.settings libmfhdf.a
だけどmfhdf.aとdf.aはない。
ライブラリが出来ていないと勘違して、他のライブラリをインストールするなど試行錯誤してしまった。
僕はldコマンドの-lオプションの意味を知らなかった。
-lmfhdf -ldfということは、libmfhdf.aとlibdf.aを探すということらしい。
常識のようだ…。orz
ということで、pip3にライブラリ検索パスを伝える必要がある。
この場合は便利な環境変数があるということです。
早速以下を実行。
$export LD_LIBRARY_PATH=/usr/lib64/hdf
LD_LIBRARY_PATHは一時的に共有ライブラリの検索パスに追加できるということです。
python-hdf4を無事インストール出来ました。
$pip3 install python-hdf4 WARNING: Running pip install with root privileges is generally not a good idea. Try `pip3 install --user` instead. Collecting python-hdf4 Downloading https://files.pythonhosted.org/packages/2c/b3/051909e55bcb3639a25e4b6740a86f7f23caa34058916edcd2495a48ff1c/python-hdf4-0.9.2.tar.gz (123kB) 100% |████████████████████████████████| 133kB 1.6MB/s Installing collected packages: python-hdf4 Running setup.py install for python-hdf4 ... done Successfully installed python-hdf4-0.9.2
追伸)
pip3 install python-hdf4はpip3 install pyhdfと同じみたいです。