现在的位置: 首页 > 综合 > 正文

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

2013年11月05日 ⁄ 综合 ⁄ 共 4800字 ⁄ 字号 评论关闭

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>

抱歉!评论已关闭.