编译android源码错误:/usr/bin/ld…

本文记录了一次在Linux环境下编译aapt过程中遇到的关于libz.so兼容性问题及其解决方案。主要表现为编译器无法找到正确的libz.so库,导致编译失败。文章详细介绍了系统的配置环境,并给出了明确的解决步骤:安装缺失的lib32z1-dev库。
编译时出现/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../libz.so when searching for -lz错误============================================
PLATFORM_VERSION_CODENAME=AOSP
PLATFORM_VERSION=AOSP
TARGET_PRODUCT=generic
TARGET_BUILD_VARIANT=eng
TARGET_SIMULATOR=
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv5te
HOST_ARCH=x86
HOST_OS=linux
HOST_BUILD_TYPE=release
BUILD_ID=OPENMASTER
============================================
host Executable: aapt (out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/aapt)
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../libz.so when searching for -lz
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../libz.a when searching for -lz
/usr/bin/ld: skipping incompatible //usr/lib/libz.so when searching for -lz
/usr/bin/ld: skipping incompatible //usr/lib/libz.a when searching for -lz
/usr/bin/ld: cannot find -lz
collect2: ld returned 1 exit status
make: *** [out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/aapt] Error 1
缺少lib32z1-dev,安装即可:apt-get install lib32z1-dev
<think>好的,用户让我解释一下他执行的几个环境变量命令的输出结果。首先,我需要回忆每个环境变量的作用,然后根据他的输出来分析可能的情况。 他先执行了`echo $PATH`,显示的结果中有多个路径,包括TTCN3相关的路径,还有常见的系统路径。PATH变量是用来查找可执行文件的,所以系统会在这些目录里寻找命令。这里需要注意的是TTCN3的路径被添加到了PATH中,可能用户安装了TTCN3工具套件,或者是开发相关的环境配置。 接下来是`echo $TTCN3_DIR`,输出是`/usr/local/TTCN3`。这个变量通常由TTCN3的安装设置,指向安装目录,帮助其他工具找到所需的资源。用户可能正在使用TTCN3进行测试套件的开发或执行。 然后是`echo $LD_LIBRARY_PATH`,显示`/usr/local/TTCN3/lib`。LD_LIBRARY_PATH告诉系统在哪里查找共享库。这里指向TTCN3的库目录,说明运行TTCN3相关的程序时需要加载这里的库文件。 再看`echo $MANPATH`,输出是`/usr/local/TTCN3/man`。MANPATH决定了man手册的搜索路径,用户安装TTCN3后,可能希望查看其自带的手册页,所以这个路径被添加进来。 用户最后输入了^C,也就是退出了当前的命令行操作。这些环境变量看起来都是正确配置的,说明用户可能已经按照TTCN3的安装指南进行了设置,或者通过某种脚本自动配置了这些变量。可能需要检查这些变量是否在shell的启动文件中正确设置,比如.bashrc或.profile,以确保每次登录时都能正确加载。 用户的需求可能是确认这些环境变量是否正确,或者在遇到相关问题时寻求帮助。比如,如果执行TTCN3命令时找不到,可能需要检查PATH是否包含正确的路径;如果运行时出现库缺失,检查LD_LIBRARY_PATH是否正确。另外,用户可能想了解这些变量是如何被设置的,或者如何永久保存这些配置。 总结来说,用户展示的环境变量配置是为了支持TTCN3工具链的正常运行,确保系统能找到相关的可执行文件、库、文档等。如果用户后续遇到相关问题,可能需要检查这些变量的持久性设置或者路径的正确性。</think>你提供的命令行输出展示了当前用户环境变量的配置情况,主要涉及与 **TTCN3** 工具套件相关的路径设置。以下是对每条命令的逐条解释和分析: --- ### 1. `echo $PATH` 输出: ``` /usr/local/TTCN3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin ``` - **作用**:`$PATH` 是系统查找可执行文件的目录列表。当输入命令(如 `ls` 或 `gcc`)时,系统会按顺序在这些目录中搜索对应的可执行文件。 - **分析**: - `/usr/local/TTCN3/bin` 被添加到 `PATH` 的最前面,说明系统会优先使用 TTCN3 工具链中的命令。 - 其他路径是 Linux 系统默认的标准可执行文件目录(如 `/usr/bin`、`/sbin`)和用户自定义目录(如 `/snap/bin`)。 --- ### 2. `echo $TTCN3_DIR` 输出: ``` /usr/local/TTCN3 ``` - **作用**:`$TTCN3_DIR` 是 TTCN3 的安装根目录。某些 TTCN3 工具和脚本依赖此变量来定位配置文件、库或示例代码。 - **分析**:变量指向 `/usr/local/TTCN3`,表明 TTCN3 被安装在系统的标准路径下,通常是管理员通过包管理工具或源码编译安装的结果。 --- ### 3. `echo $LD_LIBRARY_PATH` 输出: ``` /usr/local/TTCN3/lib ``` - **作用**:`$LD_LIBRARY_PATH` 指定动态链接库(`.so` 文件)的搜索路径。程序运行时需要加载的共享库会从这里查找。 - **分析**:TTCN3 的库文件位于 `/usr/local/TTCN3/lib`,说明运行 TTCN3 相关程序(如测试套件)时需要链接这些库。 --- ### 4. `echo $MANPATH` 输出: ``` /usr/local/TTCN3/man ``` - **作用**:`$MANPATH` 定义 `man` 命令的手册页搜索路径。通过此变量,用户可以直接查看 TTCN3 工具的手册文档。 - **分析**:TTCN3 的手册页安装在 `/usr/local/TTCN3/man` 目录下,用户可通过 `man ttcn3` 等命令查看相关文档。 --- ### 综合结论 1. **TTCN3 工具链已正确配置**: - 可执行文件路径、库路径、手册页路径均已设置,表明 TTCN3 环境已准备就绪。 - 典型的应用场景包括:开发或执行 TTCN3 测试套件、编译 TTCN3 代码、调试协议一致性测试等。 2. **环境变量来源**: - 这些变量可能通过以下方式设置: - 用户手动在 `~/.bashrc` 或 `~/.profile` 中添加 `export` 语句。 - 安装 TTCN3 时自动生成的配置脚本(如 `/etc/profile.d/ttcn3.sh`)。 3. **验证配置是否生效**: - 可运行 `which ttcn3_compiler` 检查是否能找到 TTCN3 编译器。 - 执行 `man ttcn3` 验证手册页是否能正常显示。 --- ### 可能的问题与解决 - **问题**:关闭终端后环境变量失效。 - **解决**:将变量定义写入 `~/.bashrc` 或 `~/.profile` 中使其永久生效。 - **问题**:TTCN3 命令无法执行。 - **解决**:检查 `/usr/local/TTCN3/bin` 是否存在且包含可执行文件,确认权限是否正常。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值