[FAQ14830]【Build and Make】L版本常见编译问题汇总

[DESCRIPTION]

目前MOL系统针对build and make的FAQ有很多但过于分散,本FAQ主要针对目前适应L版本(Version >= android 5.0)的已有FAQ进行汇总,同时也汇总了DCC上可以参考的相关文档。 
  
[SOLUTION]
 
注意以下汇总,适应于L版本:
(1)编译环境搭建
 
android环境搭建请到DCC搜索文档:
Android_Build_Environment_on_Ubuntu_12.04_64-bit_Installation_SOP.docx
 
modem环境搭建请到DCC搜索文档:
MTK_MOLY_MakeBuild_Design_Customer.docx
 
(2)系列FAQs
 
[FAQ14443]合入patch的注意事项
http://online.mediatek.inc/Pages/FAQ.aspx?List=SW&FAQID=FAQ14443
 
[FAQ11888]Turnkey AOSP的软件包的编译命令
http://online.mediatek.inc/Pages/FAQ.aspx?List=SW&FAQID=FAQ11888
 
[FAQ14143]AOSP如何快速build kernel、lk 和 preloader
http://online.mediatek.inc/Pages/FAQ.aspx?List=SW&FAQID=FAQ14143
 
[FAQ13925]AOSP如何单独build Preloader
http://online.mediatek.inc/Pages/FAQ.aspx?List=SW&FAQID=FAQ13925
 
[FAQ13735]AOSP 如何单独build LK
http://online.mediatek.inc/Pages/FAQ.aspx?List=SW&FAQID=FAQ13735
 
[FAQ13428]AOSP如何单独build kernel
http://online.mediatek.inc/Pages/FAQ.aspx?List=SW&FAQID=FAQ13428
 
[FAQ10625]提升Android编译速度
http://online.mediatek.inc/Pages/FAQ.aspx?List=SW&FAQID=FAQ10625 
 
[FAQ07275]如何在linux中添加新的kernel module
http://online.mediatek.inc/Pages/FAQ.aspx?List=SW&FAQID=FAQ07275
 
[FAQ14175]AOSP如何menuconfig
http://online.mediatek.inc/Pages/FAQ.aspx?List=SW&FAQID=FAQ14175
 
[FAQ13609]L版本如何编译android module
http://online.mediatek.inc/Pages/FAQ.aspx?List=SW&FAQID=FAQ13609
 
[FAQ13697]L 版本如何将第三方so库打包到apk
http://online.mediatek.inc/Pages/FAQ.aspx?List=SW&FAQID=FAQ13697
 
[FAQ13232]L 预置apk
http://online.mediatek.inc/Pages/FAQ.aspx?List=SW&FAQID=FAQ13232
 
[FAQ14513]L GMS预置
http://online.mediatek.inc/Pages/FAQ.aspx?List=SW&FAQID=FAQ14513
 
[FAQ14131]L版本预编译提取apk的odex文件,如何修改?
http://online.mediatek.inc/Pages/FAQ.aspx?List=SW&FAQID=FAQ14131
 
[FAQ13465]L版本How to clone project
http://online.mediatek.inc/Pages/FAQ.aspx?List=SW&FAQID=FAQ13465
 
[FAQ13658]L版本上传git服务器后编译出错
http://online.mediatek.inc/Pages/FAQ.aspx?List=SW&FAQID=FAQ13658
 
[FAQ11794]Preloader bin size过大编译报错怎么办
http://online.mediatek.inc/Pages/FAQ.aspx?List=SW&FAQID=FAQ11794
 
[FAQ14456]system.img>2G导致编译otapackage时报错如何处理
http://online.mediatek.inc/Pages/FAQ.aspx?List=SW&FAQID=FAQ14456
 
[FAQ13408]AOSP编译常见问题
http://online.mediatek.inc/Pages/FAQ.aspx?List=SW&FAQID=FAQ13408

<think>我们正在处理glibc-2.28在`make install`阶段出现的错误:`/usr/bin/ld: cannot find -lnss_test2`。根据引用[1][3][4]的信息,这个问题通常是由于`test-installation.pl`脚本在检查安装时尝试链接一个名为`nss_test2`的库,而该库在安装过程中尚未构建或未被正确放置。 解决方案: 1. 修改`glibc-2.28/scripts/test-installation.pl`文件,将`nss_test2`库从检查列表中排除。 2. 根据引用[1]和[3]的说明,在`test-installation.pl`文件中找到检查库名的位置,添加对`nss_test2`的排除。 具体步骤: 1. 打开`glibc-2.28/scripts/test-installation.pl`文件。 2. 找到大约125-128行(不同版本可能行号略有差异)的代码,该代码段包含一个条件判断,排除一些库的检查。 3. 在条件中添加`&& $name ne "nss_test2"`,使得脚本跳过对`nss_test2`的检查。 修改前: ```perl && $name ne "nss_test1" && $name ne "libgcc_s" ``` 修改后: ```perl && $name ne "nss_test1" && $name ne "libgcc_s" && $name ne "nss_test2" ``` 4. 保存文件,然后重新运行`make install`(注意:如果之前已经编译过但安装失败,建议先清理构建目录(即删除build目录下的内容),然后重新配置和编译,再安装。但根据引用[3]的建议,在修改后需要删除build目录下的内容重新编译,以避免之前的缓存影响。) 另外,引用[1]还提到需要修改`glibc/Changelog`文件,但通常这个修改只是为了记录变更,对于解决编译问题并不是必须的。因此,我们可以只修改`test-installation.pl`文件。 如果问题仍然存在,请检查是否还有其他库缺失,或者根据引用[4]的提示检查库的符号链接是否正确。 注意:在修改文件后,重新编译安装前,请确保回到构建目录(build目录)并重新执行编译和安装命令。 步骤总结: 1. 修改`test-installation.pl`文件,排除`nss_test2`。 2. 删除构建目录(build目录)下的所有内容(如果之前编译失败,建议清理)。 3. 重新配置:在build目录中运行`../configure --prefix=/your/installation/path`(根据你的配置)。 4. 编译:`make`。 5. 安装:`make install`。 这样应该可以解决`cannot find -lnss_test2`的问题。 相关问题: 1. 如何避免在glibc编译过程中遇到的其他常见链接错误? 2. 在修改glibc源代码后,如何确保重新编译的正确步骤? 3. 除了排除`nss_test2`,还有哪些库可能在测试安装时出现问题?</think>### 解决 glibc-2.28 make install 报错:`/usr/bin/ld: cannot find -lnss_test2` 此错误发生在 `make install` 阶段,由于 `test-installation.pl` 脚本尝试链接测试库 `nss_test2`,但该库在安装过程中未被正确构建或识别。以下是具体解决方案: #### 解决方法 1. **修改测试脚本** 打开 `glibc-2.28/scripts/test-installation.pl` 文件,定位到库检查逻辑(约第 125-128 行),添加对 `nss_test2` 的排除: ```perl # 原始代码(修改前) && $name ne "nss_test1" && $name ne "libgcc_s" # 修改后(添加 nss_test2 排除) && $name ne "nss_test1" && $name ne "libgcc_s" && $name ne "nss_test2" ``` [^1][^3] 2. **清理并重新编译** ```bash # 进入构建目录 cd build # 清理旧编译文件 make clean # 重新编译和安装 make && make install ``` #### 根本原因 - `test-installation.pl` 是 glibc 的安装验证脚本,会检查所有依赖库的链接性。 - `nss_test2` 是 glibc 内部的测试库,通常无需外部链接,但脚本的检查逻辑未将其排除[^3][^4]。 - 该问题在 glibc-2.28 中常见,更高版本可能已修复。 #### 注意事项 - 修改后无需调整 `Changelog`(除非需记录变更)[^1]。 - 若问题仍存在,检查系统中是否存在损坏的库链接(如 `/lib` 或 `/usr/lib` 下指向旧版本库的符号链接)[^4]。 --- ### 相关问题 1. **如何验证 glibc 安装是否成功?** 运行 `ldd --version` 检查版本,或执行 `make check` 进行完整测试(需测试套件支持)。 2. **编译 glibc 时还有哪些常见错误?** 如缺少 `libcrypt` 或 `libm`,通常需安装 `libxcrypt-devel` 和 `math.h` 头文件[^4]。 3. **能否跳过 `test-installation.pl` 检查?** 不推荐,但可通过 `make install -k` 尝试忽略错误(可能导致未检测的安装问题)。 [^1]: 修改 `test-installation.pl` 解决 `-lnss_test2` 链接错误 [^3]: 添加 `nss_test2` 到排除列表并清理编译目录 [^4]: 检查库链接和系统配置完整性
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值