使用Clang编译PDFium时提示找不到-latomic库的问题求助
解决编译PDFium时ld.lld找不到-latomic的问题
错误信息
ld.lld: error: unable to find library -latomic
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.
已排查环境
- 已安装组件:
- libatomic_ops 7.6.14-1
- clang 14.0.6-2
- lib32-clang 14.0.6-1
- libatomic1
- LD_LIBRARY_PATH配置:
$ export LD_LIBRARY_PATH=/usr/lib64:/usr/lib32:/usr/local/lib:/usr/lib $ sudo ldconfig - 尝试过Debian、Arch、Ubuntu系统
解决步骤
1. 针对Android交叉编译场景(项目为Android版PDFium)
该项目是面向Android的PDFium分支,编译时需使用Android NDK提供的libatomic,而非系统安装的主机库:
- 检查BUILD.md中NDK的配置流程,确保已正确设置
ANDROID_NDK环境变量,指向完整的NDK路径 - 在gn构建参数(
args.gn)中添加NDK库路径的链接参数:
其中extra_ldflags = ["-latomic", "-L${android_ndk_root}/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/${android_arch}"]android_arch替换为你编译的目标架构(如arm64-v8a、x86_64)
2. 主机编译场景(若尝试编译本地版本)
- 显式指定libatomic的路径给链接器:
在编译命令或gn的extra_ldflags中添加库的绝对路径,例如64位系统:extra_ldflags = ["/usr/lib/x86_64-linux-gnu/libatomic.so"] - 若系统中缺少
libatomic.so的软链接(仅存在libatomic.so.1),手动创建:
32位系统对应路径调整为sudo ln -s /usr/lib/x86_64-linux-gnu/libatomic.so.1 /usr/lib64/libatomic.so/usr/lib/i386-linux-gnu/
3. 通用排查
- 用
clang++ -v重新编译,查看完整的链接命令,确认链接器搜索的库路径是否包含libatomic所在目录 - 检查
libatomic1包是否安装完整,可重新安装:# Debian/Ubuntu sudo apt reinstall libatomic1 # Arch sudo pacman -Syu gcc-libs # libatomic属于gcc-libs包
内容的提问来源于stack exchange,提问作者mudlej
相关产品推荐
相关产品推荐

