wanghaoze@wanghaoze:~$ sudo apt-get install lldb-3.9 liblldb-3.9-dev Reading package lists... Done Building dependency tree... Done Reading state information... Done Some packages could not be installed. This may mean that you have requested an impossible situation or if you are using the unstable distribution that some required packages have not yet been created or been moved out of Incoming. The following information may help to resolve the situation: The following packages have unmet dependencies: libllvm3.9 : Depends: libffi6 (>= 3.0.4) but it is not installable llvm-3.9-dev : Depends: libjsoncpp1 but it is not installable Depends: llvm-3.9 (= 1:3.9.1~svn288847-1~exp1) but it is not going to be installed python-lldb-3.9 : Depends: python but it is not installable E: Unable to correct problems, you have held broken packages.
时间: 2025-03-21 10:03:35 浏览: 56
<think>嗯,用户正在尝试在Ubuntu上安装lldb-3.9和liblldb-3.9-dev,但遇到了依赖问题,特别是libllvm3.9、libffi6、libcpp1等。首先,我需要确定这些软件包的可用性。因为Ubuntu的官方仓库可能已经不维护旧版本的LLVM和LLDB了,尤其是3.9版本,可能已经被更新的版本取代了。
用户提到的是Ubuntu,但具体版本没说。假设用户使用的是较新的Ubuntu版本,比如20.04或更高,那么默认的仓库可能没有这些旧的包。我需要先建议他们检查是否启用了正确的仓库,比如Ubuntu的universe仓库或者LLVM官方提供的旧版本仓库。
另外,用户可能需要添加LLVM的官方APT仓库,那里可能有旧版本的存档。例如,可以通过脚本从llvm.org/apt/获取,然后指定版本3.9。或者,用户可能需要手动下载deb包并安装,但需要注意依赖关系,这可能会导致冲突,尤其是如果系统中已经安装了新版本的LLVM。
还有,libffi6可能在较新的Ubuntu中被libffi7替代,所以需要找到兼容的库或者使用符号链接。同样,libcpp1可能指的是旧版本的libstdc++,可能需要安装相应的版本或者兼容包。
用户可能需要更新软件源列表,然后使用apt-get install -f来修复损坏的依赖。如果不行,可以尝试手动下载并安装每个依赖包,使用dpkg -i,但要注意顺序,先安装底层依赖,比如libffi6,然后是libllvm3.9,最后是lldb-3.9相关的包。
此外,使用aptitude工具可能提供更好的依赖解决方案,因为它可以建议降级或其他解决方案。如果所有方法都失败,考虑从源代码编译LLDB 3.9,但这需要用户有编译环境和时间,而且可能需要处理更多的依赖问题。
最后,提醒用户注意兼容性问题和安全风险,因为旧版本可能不再接收更新。如果可能,建议升级到支持的LLVM版本。</think>### 逐步解决方案
#### 步骤1:添加LLVM官方APT仓库
LLVM官方提供历史版本的预编译包。通过以下命令添加仓库:
```bash
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
sudo add-apt-repository "deb http://apt.llvm.org/$(lsb_release -cs)/ llvm-toolchain-$(lsb_release -cs)-3.9 main"
sudo apt-get update
```
#### 步骤2:安装基础依赖
手动处理关键依赖项:
```bash
# 安装旧版libffi6(需确认Ubuntu版本兼容性)
wget http://archive.ubuntu.com/ubuntu/pool/main/libf/libffi/libffi6_3.2.1-8_amd64.deb
sudo dpkg -i libffi6_3.2.1-8_amd64.deb
# 安装libstdc++旧版本(即libcpp1)
sudo apt-get install gcc-5-base libstdc++5
```
#### 步骤3:强制安装LLDB套件
使用`apt-get`指定忽略依赖关系(慎用):
```bash
sudo apt-get install lldb-3.9 liblldb-3.9-dev --ignore-missing
```
#### 步骤4:验证安装
检查动态库链接状态:
```bash
ldd /usr/lib/llvm-3.9/lib/liblldb.so
```
### 替代方案:源码编译
若包管理安装失败,可通过源码编译:
```bash
git clone -b release_39 https://github.com/llvm/llvm-project.git
cd llvm-project
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_PROJECTS="lldb" ../llvm
make -j$(nproc)
sudo make install
```
### 注意事项
1. 使用旧版本可能引发安全漏洞(如CVE-2020-15824)[^1]
2. 建议优先考虑新版LLVM套件(如v12+)
3. 出现`libtinfo`缺失时需安装`libncurses5`
阅读全文
相关推荐

















