Software-Installation

‘LD’ 找不到要連結的庫,即使 ’ldconfig -v’ 列出了文件

  • March 4, 2021

我正在嘗試在我的 RaspBerry Pi 上安裝 KIWI。當我嘗試

pip install kiwi

我得到一個連結失敗,與

/usr/lib64/gcc/aarch64-suse-linux/10/../../../../aarch64-suse-linux/bin/ld: cannot find -lpython3.6m
collect2: error: ld returned 1 exit status
error: command 'gcc' failed with exit status 1

因此,我將相關目錄添加到我的ld.so.conf, 並執行sudo ldconfig -v | grep python,輸出為:

\ldconfig: Can't stat /libilp32: No such file or directory
ldconfig: Path `/usr/lib' given more than once
(from <builtin>:0 and /etc/ld.so.conf:4)
ldconfig: Path `/usr/lib64' given more than once
(from <builtin>:0 and /etc/ld.so.conf:2)
ldconfig: Can't stat /usr/libilp32: No such file or directory
   libpython3.6m.so.1.0 -> libpython3.6m.so.1.0
   libpython3.8.so.1.0 -> libpython3.8.so.1.0
   libpython3.so -> libpython3.so
   libboost_python-py3.so.1.75.0 -> libboost_python3.so
   libboost_mpi_python-py3.so.1.75.0 -> libboost_mpi_python-py3.so.1.75.0
   libpytalloc-util.cpython-38-aarch64-linux-gnu.so.2 -> libpytalloc-util.cpython-38-aarch64-linux-gnu.so.2.3.1
   libpyldb-util.cpython-38-aarch64-linux-gnu.so.2 -> libpyldb-util.cpython-38-aarch64-linux-gnu.so.2.2.0
   libpython2.7.so.1.0 -> libpython2.7.so.1.0
/usr/include/python3.8: (from /etc/ld.so.conf:6)

請注意,libpython3.6m.so在該列表中,這是 ld 抱怨它找不到的內容。當 ld 清楚地能夠找到要連結的庫時,為什麼 kiwi 的 pip 安裝在 ld 上失敗?

ldconfig不配置ld,它配置ld.so,動態連結器/載入器。ld在這裡失敗是因為它正在尋找libpython3.6m.so; 為此,您應該安裝相關的開發包(大概是python3-devel)。

您應該注意,libpython3.6m.so它不在ldconfig. 輸出提到libpython3.6m.so.1.0,這是不一樣的。

如果您沒有開發包,您可以創建一個符號連結libpython3.6m.solibpython3.6m.so.1.0.

此外,正如已經提到的,編譯器和連結器並不關心ld.so.conf.

引用自:https://unix.stackexchange.com/questions/637498