makeでコンパイルした時にライブラリが見つからないのでエラーになる.
ld: cannot find -lfoo
解決策
- 本当にライブラリが入ってるか確認 (fooにはライブラリ名が入る,-lhdf5が無いなら fooはhdf5)
ldconfig -p | grep libfoo
- シンボリックリンクが貼れているのか確認
ll /usr/lib/*foo*
libhdf5の時はx86_64-linux-gnuにライブラリがインストールされてたので
ll /usr/lib/x86_64-linux-gnu/*hdf5*
すると
-rwxr-xr-x 1 root root 8278106 Dec 9 2021 /usr/lib/x86_64-linux-gnu/libhdf5_serial.a*
-rwxr-xr-x 1 root root 1065454 Dec 9 2021 /usr/lib/x86_64-linux-gnu/libhdf5_serial_cpp.a*
lrwxrwxrwx 1 root root 29 Dec 9 2021 /usr/lib/x86_64-linux-gnu/libhdf5_serial_cpp.so -> libhdf5_serial_cpp.so.103.3.0*
lrwxrwxrwx 1 root root 29 Dec 9 2021 /usr/lib/x86_64-linux-gnu/libhdf5_serial_cpp.so.103 -> libhdf5_serial_cpp.so.103.3.0*
-rwxr-xr-x 1 root root 480288 Dec 9 2021 /usr/lib/x86_64-linux-gnu/libhdf5_serial_cpp.so.103.3.0*
-rwxr-xr-x 1 root root 480910 Dec 9 2021 /usr/lib/x86_64-linux-gnu/libhdf5_serial_fortran.a*
lrwxrwxrwx 1 root root 33 Dec 9 2021 /usr/lib/x86_64-linux-gnu/libhdf5_serial_fortran.so -> libhdf5_serial_fortran.so.102.1.0*
lrwxrwxrwx 1 root root 33 Dec 9 2021 /usr/lib/x86_64-linux-gnu/libhdf5_serial_fortran.so.102 -> libhdf5_serial_fortran.so.102.1.0*
-rwxr-xr-x 1 root root 313632 Dec 9 2021 /usr/lib/x86_64-linux-gnu/libhdf5_serial_fortran.so.102.1.0*
-rwxr-xr-x 1 root root 220746 Dec 9 2021 /usr/lib/x86_64-linux-gnu/libhdf5_serial_hl.a*
-rwxr-xr-x 1 root root 14390 Dec 9 2021 /usr/lib/x86_64-linux-gnu/libhdf5_serial_hl_cpp.a*
lrwxrwxrwx 1 root root 32 Dec 9 2021 /usr/lib/x86_64-linux-gnu/libhdf5_serial_hl_cpp.so -> libhdf5_serial_hl_cpp.so.100.1.5*
lrwxrwxrwx 1 root root 32 Dec 9 2021 /usr/lib/x86_64-linux-gnu/libhdf5_serial_hl_cpp.so.100 -> libhdf5_serial_hl_cpp.so.100.1.5*
-rwxr-xr-x 1 root root 23024 Dec 9 2021 /usr/lib/x86_64-linux-gnu/libhdf5_serial_hl_cpp.so.100.1.5*
-rwxr-xr-x 1 root root 218836 Dec 9 2021 /usr/lib/x86_64-linux-gnu/libhdf5_serialhl_fortran.a*
lrwxrwxrwx 1 root root 35 Dec 9 2021 /usr/lib/x86_64-linux-gnu/libhdf5_serialhl_fortran.so -> libhdf5_serialhl_fortran.so.100.0.6*
lrwxrwxrwx 1 root root 35 Dec 9 2021 /usr/lib/x86_64-linux-gnu/libhdf5_serialhl_fortran.so.100 -> libhdf5_serialhl_fortran.so.100.0.6*
-rwxr-xr-x 1 root root 158280 Dec 9 2021 /usr/lib/x86_64-linux-gnu/libhdf5_serialhl_fortran.so.100.0.6*
lrwxrwxrwx 1 root root 28 Dec 9 2021 /usr/lib/x86_64-linux-gnu/libhdf5_serial_hl.so -> libhdf5_serial_hl.so.100.1.4*
lrwxrwxrwx 1 root root 28 Dec 9 2021 /usr/lib/x86_64-linux-gnu/libhdf5_serial_hl.so.100 -> libhdf5_serial_hl.so.100.1.4*
-rwxr-xr-x 1 root root 142832 Dec 9 2021 /usr/lib/x86_64-linux-gnu/libhdf5_serial_hl.so.100.1.4*
-rwxr-xr-x 1 root root 6691 Dec 9 2021 /usr/lib/x86_64-linux-gnu/libhdf5_serial.settings*
lrwxrwxrwx 1 root root 25 Dec 9 2021 /usr/lib/x86_64-linux-gnu/libhdf5_serial.so -> libhdf5_serial.so.103.3.0*
lrwxrwxrwx 1 root root 25 Dec 9 2021 /usr/lib/x86_64-linux-gnu/libhdf5_serial.so.103 -> libhdf5_serial.so.103.3.0*
-rwxr-xr-x 1 root root 3737472 Dec 9 2021 /usr/lib/x86_64-linux-gnu/libhdf5_serial.so.103.3.0*
エラーは
ld: cannot find -lhdf5
ld: cannot find -lhdf5_hl
だったので,libhdf5.soとlibhdf5_hl.soのリンクが無い!ということで・・・
sudo ln -s libhdf5_serial.so libhdf5.so
sudo ln -s libhdf5_serial_hl.so libhdf5_hl.so
とやれば解決.無事エラーは解消された.
参考(以下を見ながら試行錯誤した)