如何让conda中的ld找到libs

Pet*_* Wu 5 c c++ linux gcc conda

我正在尝试在 conda 环境下从源代码编译 minimap2(在此存储库中https://github.com/lh3/minimap2.git),c 编译器也是由 conda 安装的。它无法与 zlib 链接:

<conda_path>/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/bin/ld: cannot find -lz
collect2: error: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

只需运行“<conda_path>/bin/x86_64-conda_cos6-linux-gnu-cc -lz”即可重现此错误

但如果运行“ld -lz --verbose”它可以工作

$ which ld
/usr/bin/ld
$ ld -lz --verbose
(sth not useful)
===
attempt to open //usr/x86_64-redhat-linux/lib64/libz.so failed
attempt to open //usr/x86_64-redhat-linux/lib64/libz.a failed
attempt to open //usr/lib64/libz.so succeeded
-lz (//usr/lib64/libz.so)
libc.so.6 needed by //usr/lib64/libz.so
found libc.so.6 at /usr/lib64//libc.so.6
ld-linux-x86-64.so.2 needed by /usr/lib64//libc.so.6
found ld-linux-x86-64.so.2 at /usr/lib64//ld-linux-x86-64.so.2
ld: warning: cannot find entry symbol _start; not setting start address
Run Code Online (Sandbox Code Playgroud)

我已将 /usr/lib64/ 添加到 LIBRARY_PATH 和 LD_LIBRARY_PATH 中,但没有任何更改,那么如何解决这个问题?任何帮助,将不胜感激

lin*_*k89 1

我有类似的问题,以下可以解决它:

快速解决方法

cd /path/to/your/conda/env/compiler_compat/ && mv ld ld.bak
# or just remove it if you don't care.
Run Code Online (Sandbox Code Playgroud)

受到推崇的?

conda install -c conda-forge ld_impl_linux-64  # Modify the suffix to correspond with your platform
Run Code Online (Sandbox Code Playgroud)