lunch 和 m 命令因 AOSP 中未定义的符号而失败

问题描述 投票:0回答:1

我正在尝试在 AOSP 中运行

lunch
m
命令。具体来说,命令是
. ./build/envsetup.sh
lunch aosp_cf_x86_64_phone-trunk_staging-userdebug
m smp-fuzzer
。但是,午餐命令由于以下原因失败:

prebuilts/build-tools/linux-x86/bin/ckati: symbol lookup error: prebuilts/build-tools/linux-x86/bin/ckati: undefined symbol: _ZNSt3__15mutexD1Ev

我可以知道为什么会发生这种情况吗?谢谢你。

更多笔记和我所做的:

(1) LLVM 和 clang 版本为 13.0.1。午餐命令在二月份运行。我唯一改变的是 LD_LIBRARY_PATH。我不认为我可以改变libc++代码/libc++.so,而ckati来自AOSP本身。

(2) 我在这个符号上使用了c++filt,它是

std::__1::mutex::~mutex()
,它是libc++ std::mutex 的析构函数。我用 std::mutex 编写了一个非常简单的程序,它可以用 clang 编译并执行。

(3)

printenv LD_LIBRARY_PATH
结果:
:/scratch/wjw5351/downloads/klee/build/lib:/scratch/wjw5351/opt/libcxx/libc++-build-130/lib:/scratch/wjw5351/downloads/klee/build/lib:/scratch/wjw5351/opt/libcxx/libc++-build-130/lib
。有一个重复的 libc++ 路径,但我认为这并不重要。 我也尝试过
export LD_LIBRARY_PATH=/scratch/wjw5351/opt/libcxx/libc++-build-130/lib
但还是不行。

(4)我使用了

ldd prebuilts/build-tools/linux-x86/bin/ckati
并且输出看起来不错:

linux-vdso.so.1 (0x00007ffddebdb000)
libjemalloc5.so => /scratch/wjw5351/aosp_clean/prebuilts/build-tools/linux-x86/bin/../lib64/libjemalloc5.so (0x00007f978bb51000)
libc++.so => /scratch/wjw5351/opt/libcxx/libc++-build-130/lib/libc++.so (0x00007f978ba4c000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f978ba3a000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f978ba33000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f978b94c000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f978b947000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f978b927000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f978b6fe000)
/lib64/ld-linux-x86-64.so.2 (0x00007f978be2b000)
libatomic.so.1 => /lib/x86_64-linux-gnu/libatomic.so.1 (0x00007f978b6f4000)
linker llvm android-source libc++
1个回答
0
投票

最后通过从

/libcxx/libc++-build-130/lib
中删除
LD_LIBRARY_PATH
解决了这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.