android源码编译(从很多地方搜索的,每个问题的具体出处搞不清楚了)

In file included from /usr/include/stdlib.h:25,
                 from build/tools/acp/acp.c:11:
/usr/include/features.h:323: 致命错误: bits/predefs.h:没有那个文件或目录
编译中断。
make: *** [out/host/linux-x86/obj/EXECUTABLES/acp_intermediates/acp.o] 错误 1
=====================================================================================


解决方法:
确定你的系统是x86_64 GNU/Linux
fanw@fanw:~/Joetang/WORKING_DIRECTORY$ uname -a
Linux fanw 3.5.0-28-generic #47-Ubuntu SMP Tue Apr 9 19:03:54 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
安装libc6-dev-i386
     sudo apt-get install libc6-dev-i386
=====================================================================================


/usr/bin/ld: cannot find -lstdc++
缺少g++-multilib库,安装即可: apt-get install g++-multilib   
=====================================================================================


/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
=====================================================================================


Android编译时遇到 cannot find -lncurses错误解决办法,是因为没有安装libncurses5-dev
ncurses是一个字符终端下屏幕控制的基本库。
要编译一些老程序,还经常遇得到。
只需执行安装命令:
ubuntu 11.04 32bit下命令如下
sudo apt-get install libncurses5-dev 
ubuntu 12.04 64bit下命令如下
sudo apt-get install libncurses5-dev:i386
=====================================================================================


# make
...
/usr/bin/ld: cannot find -lltdl
collect2: ld returned 1 exit status
make: *** [libphp5.la] Error 1
 
问题原因:
该问题一般是由于ld在进行库的连接时找不到库文件所致:


解决方案:
    出现该问题时,去lib目录下查找相关的库文件,基本如下:
[root@localhost ~]# cd  /usr/lib
[root@localhost lib]# ll | grep libltdl
lrwxrwxrwx   1 root root       16 Nov 14 22:40 libltdl.so.3 -> libltdl.so.3.1.4
-rwxr-xr-x   1 root root    25484 Dec 16  2009 libltdl.so.3.1.4
   上述库文件中没有库的入口: libltdl.so
可以通过手动建立连接来解决:
   # ln -s  ./libltdl.so.3   ./libltdl.so


但是深究该问题应该是该库的头文件库没有安装所致:
[root@localhost lib]# yum list all | grep ltdl
libtool-ltdl.i386                       1.5.22-7.el5_4              installed   
libtool-ltdl-devel.i386                 1.5.22-7.el5_4              CentOs5.5-32
安装头文件:
[root@localhost lib]# yum -y install libtool-ltdl-devel.i386
。。。
查看后发现该错误确实是由devel头文件未安装所致。
[root@localhost lib]# rpm -ql libtool-ltdl-devel.i386
/usr/include/ltdl.h
/usr/lib/libltdl.a
/usr/lib/libltdl.la
/usr/lib/libltdl.so


修改build/core/combo/HOST_linux-x86.mk 61行,将
HOST_GLOBAL_CFLAGS += -D_FORTIFY_SOURCE=0
修改成
HOST_GLOBAL_CFLAGS += -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0
Android源码换服务器了,具体的看http://source.android.com/source/downloading.html
=====================================================================================


<built-in>:0:0: note: this is the location of the previous definition
host StaticLib: libOpenglCodecCommon (out/host/linux-x86/obj/STATIC_LIBRARIES/li
bOpenglCodecCommon_intermediates/libOpenglCodecCommon.a)
host SharedLib: libOpenglRender (out/host/linux-x86/obj/lib/libOpenglRender.so)
/usr/bin/ld: cannot find -lX11
collect2: ld returned 1 exit status
make: *** [out/host/linux-x86/obj/lib/libOpenglRender.so] Error 1


解决方法:$ sudo ln -s /usr/lib/i386-linux-gnu/libX11.so.6 /usr/lib/i386-linux-gnu/libX11.so
=====================================================================================


host StaticLib: libGLcommon (out/host/linux-x86/obj/STATIC_LIBRARIES/libGLcommon
_intermediates/libGLcommon.a)
host SharedLib: libGLES_CM_translator (out/host/linux-x86/obj/lib/libGLES_CM_tra
nslator.so)
/usr/bin/ld: cannot find -lGL
collect2: ld returned 1 exit status
make: *** [out/host/linux-x86/obj/lib/libGLES_CM_translator.so] Error 1


解决方法: sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1.2 /usr/lib/libGL.so 
=====================================================================================


Target ram disk: out/target/product/smdkv210/ramdisk.img
target Strip: libutils (out/target/product/smdkv210/obj/lib/libutils.so)
mkimage -A arm -O linux -T ramdisk -C none -a 0x30A00000 -n "ramdisk" -d out/target/product/smdkv210/ramdisk.img out/target/product/smdkv210/ramdisk-uboot.img
/bin/bash: mkimage: command not found
make: *** [out/target/product/smdkv210/ramdisk.img] Error 127
make: *** Deleting file `out/target/product/smdkv210/ramdisk.img'


sudo apt-get install uboot-mkimage
=====================================================================================


编译sdk
$ source build/envsetup.sh
$ lunch sdk-eng
$ make sdk -j4


编译后的jar:
./out/host/linux-x86/sdk/android-sdk_eng.jiang_linux-x86/platforms/android-4.0.1/android.jar
./out/target/common/obj/PACKAGING/android_jar_intermediates/android.jar
=====================================================================================


external/llvm/lib/ExecutionEngine/JIT/Intercept.cpp: 在构造函数‘{anonymous}::StatSymbols::StatSymbols()’中: external/llvm/lib/ExecutionEngine/JIT/Intercept.cpp:69:67: 错误: ‘lseek64’在此作用域中尚未声明 make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libLLVMJIT_intermediates/Intercept.o] 错误 1


在external/llvm/lib/ExecutionEngine/JIT/Intercept.cpp中添加头文件


#define _LARGEFILE64_SOURCE
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要下载和编译Android源码,首先需要安装好git和repo等工具。你可以参考《Android源码下载 & 编译(高通)》第1节中的指南来完成这些工具的安装过程。 下载Android源码的方法可以根据不同的情况而有所不同。如果你是按照《Android源码下载 & 编译(高通)》的方法下载的源码,那么源码中应该包含有kernel目录,也就是包含了Linux内核。然而,通过其他方法下载的源码可能不包含kernel目录,也就是没有包含Linux内核。在参考资料中明确指出,Android 4.0源码默认下载是不包括内核源码的。因此,如果你遇到这种情况,你需要另外下载Android和Linux源码,并进行编译。 需要注意的是,与《Android源码下载 & 编译(高通)》不同,上述编译过程并没有编译Linux内核。你需要按照下文的指引进行Linux内核的编译具体的步骤和方法可以参考后续的文档。 总结起来,要下载和编译Android源码,你需要先安装好相关工具,然后根据具体的情况选择合适的下载方法。如果你已经按照《Android源码下载 & 编译(高通)》的方法下载了源码,那么你已经包含了Linux内核。否则,你需要额外下载Android和Linux源码,并按照相关指引进行编译。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Android源码下载&编译(TI)](https://blog.csdn.net/Q1302182594/article/details/52208366)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值