You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

交叉编译Perl for Android时遇ld.lld找不到库错误求助

解决交叉编译Perl for Android时ld.lld找不到-lpthread/-lcrypt/-lutil的问题

你遇到的问题核心是误用了主机架构的库包,而非Android NDK提供的交叉编译库,以下是具体解决步骤:

  • 先卸载无关的主机库(可选,避免混淆):

    sudo apt remove libpthread-stubs0-dev
    

    这个包是给x86架构程序用的,和Android交叉编译完全无关。

  • 确保Android NDK路径正确配置:
    确认已下载并解压Android NDK(推荐r25及以上版本),将NDK路径加入环境变量:

    export ANDROID_NDK=/path/to/your/android-ndk-r25c
    

    替换成你实际的NDK解压路径。

  • 修正测试程序的编译命令:
    Android的libpthread、libcrypt功能已整合到libc中,无单独动态库;libutil是Linux主机特有的库,Android系统不存在。编译时直接去掉这些链接参数,并指定NDK的sysroot:

    aarch64-linux-android23-clang --sysroot=$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/sysroot test.c -o test
    
  • 调整Perl Configure脚本的参数:
    运行Configure时明确指定交叉编译环境,同时禁用Android不存在的库依赖:

    ./Configure -des \
      -Dcc=aarch64-linux-android23-clang \
      -Dld=aarch64-linux-android23-clang \
      -Dsysroot=$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/sysroot \
      -Dprefix=/data/local/perl \
      -Dlibpthread=none \
      -Dlibcrypt=none \
      -Dlibutil=none
    

    参数说明:

    • -des:采用默认配置,跳过交互式提问
    • -Dprefix:指定Perl在Android设备上的安装路径
    • -Dlibxxx=none:告知Configure无需链接这些不存在的库

如果Configure仍报错,可检查生成的config.sh文件,手动删除包含-lpthread、-lcrypt、-lutil的行后,重新运行make。

内容的提问来源于stack exchange,提问作者JayTee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 02:32:50