/usr/bin/ld:找不到-lpython3.6m

/usr/bin/ld:找不到-lpython3.6m,python,python-3.x,linux,pip,bitarray,Python,Python 3.x,Linux,Pip,Bitarray,我尝试使用pip安装bitarray,但在链接libpython时失败 Downloading https://repo/api/pypi/python/packages/packages/eb/fd/bf67cfea810305148ab8a1e8fbdcc5179f56979c73907fec9a36ebd4a58a/bitarray-1.2.0.tar.gz (48kB) Installing collected packages: bitarray Running setup

我尝试使用pip安装bitarray,但在链接libpython时失败

  Downloading https://repo/api/pypi/python/packages/packages/eb/fd/bf67cfea810305148ab8a1e8fbdcc5179f56979c73907fec9a36ebd4a58a/bitarray-1.2.0.tar.gz (48kB)
Installing collected packages: bitarray
    Running setup.py install for bitarray: started
    Running setup.py install for bitarray: finished with status 'error'
    ERROR: Command errored out with exit status 1:
     command: /opt/rp/python-3.6.9/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-80tjlaa0/bitarray/setup.py'"'"'; __file__='"'"'/tmp/pip-install-80tjlaa0/bitarray/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-record-lr_6fezd/install-record.txt --single-version-externally-managed --compile
         cwd: /tmp/pip-install-80tjlaa0/bitarray/
    Complete output (19 lines):
    running install
    running build
    running build_py
    creating build
    creating build/lib.linux-x86_64-3.6
    creating build/lib.linux-x86_64-3.6/bitarray
    copying bitarray/__init__.py -> build/lib.linux-x86_64-3.6/bitarray
    copying bitarray/test_bitarray.py -> build/lib.linux-x86_64-3.6/bitarray
    copying bitarray/test_util.py -> build/lib.linux-x86_64-3.6/bitarray
    copying bitarray/util.py -> build/lib.linux-x86_64-3.6/bitarray
    running build_ext
    building 'bitarray._bitarray' extension
    creating build/temp.linux-x86_64-3.6
    creating build/temp.linux-x86_64-3.6/bitarray
    gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -O -m64 -fPIC -I/opt/rp/python-3.6.9/include/python3.6m -c bitarray/_bitarray.c -o build/temp.linux-x86_64-3.6/bitarray/_bitarray.o
    gcc -pthread -shared -m64 -Wl,-R/home/jenkins/workspace/python-centos7/python-3.6.9/lib,-R/opt/rp/mysql/lib build/temp.linux-x86_64-3.6/bitarray/_bitarray.o -L/home/jenkins/workspace/centos7/python-3.6.9/lib -lpython3.6m -o build/lib.linux-x86_64-3.6/bitarray/_bitarray.cpython-36m-x86_64-linux-gnu.so
    /usr/bin/ld: cannot find -lpython3.6m
    collect2: error: ld returned 1 exit status
    error: command 'gcc' failed with exit status 1
    ----------------------------------------
ERROR: Command errored out with exit status 1: /opt/alu-rp/python-3.6.9/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-80tjlaa0/bitarray/setup.py'"'"'; __file__='"'"'/tmp/pip-install-80tjlaa0/bitarray/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-record-lr_6fezd/install-record.txt --single-version-externally-managed --compile Check the logs for full command output.
但是我可以看到Libpython.so文件

/opt/rp/python-3.6.9/lib/libpython3.6m.so.1.0
/opt/rp/python-3.6.9/lib/libpython3.6m.so
/opt/rp/python-3.6.9/lib/python3.6/config-3.6m-x86_64-linux-gnu/libpython3.6m.a
我的
$LD_LIBRARY_路径
/opt/rp/python-3.6.9/lib:/opt/rp/mysql/lib:/opt/rp/python-3.6.9/lib:/opt/rp/mysql/lib


如何链接libpython以完成安装

我认为您需要将libpython3.6m.so目录包括在LIBRARY\u PATH和LD\u LIBRARY\u PATH中。前者在链接时搜索。后者在运行时使用。

我尝试了所有我得到的方法,但都没有解决问题

已解决:
libpython3.6m软链接。因此
到默认的
LD\u LIBRARY\u路径

之一是导出到环境中的
LD\u LIBRARY\u路径
,还是仅设置为shell变量?这就是说,这与运行时有关,而不是与编译时有关……对于编译时,您需要一个额外的
-L
参数传递给编译器。您可能应该将
-Wl,--enable新的dtags
-Wl,-R,$$ORIGIN/./lib'
添加到
LDFLAGS
。假设您的程序将安装在
/opt/rp/python-3.6.9/bin
。(我真的不知道在哪个位置安装了什么。也许你应该清楚地说明)。LD_LIBRARY_PATH是作为Shell变量的一部分导出的。我曾尝试过这种方法,但仍然不适用于我的情况。所以我只是将libpython3.6m.so软链接到一个默认的LD_LIBRARY_路径。