How to build Android adb for ARM .

Thanks to Google I’ve just found searching in many Forum threads the way to build adb on ARM arch.
Just download sources with git (apt-get install git-core on debian-like system):

$ git clone git://android.git.kernel.org/platform/system/core.git system/core
$ git clone git://android.git.kernel.org/platform/build.git build
$ git clone git://android.git.kernel.org/platform/external/zlib.git external/zlib
$ git clone git://android.git.kernel.org/platform/bionic.git bionic
or you can go into Android source code and find the directory /system/core/adb/

Now edit build/core/main.mk and comment out the parts labelled
# Check for the correct version of java
and
# Check for the correct version of javac
Since adb doesn’t need Java, these checks are unnecessary.
Also edit build/target/product/sdk.mk and comment out the “include” lines after
# include available languages for TTS in the system image
This avoids having to download language files that aren’t needed for adb. 

Save this Makefile as system/core/adb/Makefile :  https://gist.github.com/958335
Then just run:
cd system/core/adb; make

Then you can copy and use your adb binary.
That’s all! If you have any problems search your distro’s packages repository to install needed packages!
:-) 

Makefile:

SRCS+= utils.c


VPATH+= ../libcutils
SRCS+= abort_socket.c
SRCS+= socket_inaddr_any_server.c
SRCS+= socket_local_client.c
SRCS+= socket_local_server.c
SRCS+= socket_loopback_client.c
SRCS+= socket_loopback_server.c
SRCS+= socket_network_client.c


VPATH+= ../libzipfile
SRCS+= centraldir.c
SRCS+= zipfile.c


VPATH+= ../../../external/zlib
SRCS+= adler32.c
SRCS+= compress.c
SRCS+= crc32.c
SRCS+= deflate.c
SRCS+= infback.c
SRCS+= inffast.c
SRCS+= inflate.c
SRCS+= inftrees.c
SRCS+= trees.c
SRCS+= uncompr.c
SRCS+= zutil.c


CPPFLAGS+= -DADB_HOST=1
CPPFLAGS+= -DHAVE_FORKEXEC=1
CPPFLAGS+= -DHAVE_SYMLINKS
CPPFLAGS+= -DHAVE_TERMIO_H
CPPFLAGS+= -D_GNU_SOURCE
CPPFLAGS+= -D_XOPEN_SOURCE
CPPFLAGS+= -I.
CPPFLAGS+= -I../include
CPPFLAGS+= -I../../../external/zlib


CFLAGS+= -O2 -g -Wall -Wno-unused-parameter
LDFLAGS= -static
LIBS= -lrt -lpthread


TOOLCHAIN= arm-none-linux-gnueabi-
CC= $(TOOLCHAIN)gcc
LD= $(TOOLCHAIN)gcc


OBJS= $(SRCS:.c=.o)


all: adb


adb: $(OBJS)
        $(LD) -o $@ $(LDFLAGS) $(OBJS) $(LIBS)


clean:
        rm -rf $(OBJS)
 
 ============================================================================================================================================================

pseudolocalize.cpp is not needed for adb. And NDK toolchain is intended to build with bionic(Android libc). adb requires glibc(GNU libc) to build.

I created a Makefile to compile adb for Linux/ARM. This Makefile makes statically linked adb executable binary for Linux/ARM, thus it works on Android/ARM as well.

How to make.

  1. Install Sourcery G++ Lite for ARM and GNU Make.
  2. Download "Android source code".
  3. Save Makefile as system/core/adb/Makefile.
  4. cd system/core/adb; make.
    Makefile #
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    
            
            
    SRCS += adb.c
    SRCS+ = adb_client.c
    SRCS+ = commandline.c
    SRCS+ = console.c
    SRCS+ = file_sync_client.c
    SRCS+ = fdevent.c
    SRCS+ = get_my_path_linux.c
    SRCS+ = services.c
    SRCS+ = sockets.c
    SRCS+ = transport.c
    SRCS+ = transport_local.c
    SRCS+ = transport_usb.c
    SRCS+ = usb_linux.c
    SRCS+ = usb_vendors.c
    SRCS+ = utils.c
    VPATH+ = ../libcutils
    SRCS+ = abort_socket.c
    SRCS+ = socket_inaddr_any_server.c
    SRCS+ = socket_local_client.c
    SRCS+ = socket_local_server.c
    SRCS+ = socket_loopback_client.c
    SRCS+ = socket_loopback_server.c
    SRCS+ = socket_network_client.c
    VPATH+ = ../libzipfile
    SRCS+ = centraldir.c
    SRCS+ = zipfile.c
    VPATH+ = ../../../external/zlib
    SRCS+ = adler32.c
    SRCS+ = compress.c
    SRCS+ = crc32.c
    SRCS+ = deflate.c
    SRCS+ = infback.c
    SRCS+ = inffast.c
    SRCS+ = inflate.c
    SRCS+ = inftrees.c
    SRCS+ = trees.c
    SRCS+ = uncompr.c
    SRCS+ = zutil.c
    CPPFLAGS+ = -DADB_HOST =1
    CPPFLAGS+ = -DHAVE_FORKEXEC =1
    CPPFLAGS+ = -DHAVE_SYMLINKS
    CPPFLAGS+ = -DHAVE_TERMIO_H
    CPPFLAGS+ = -D_GNU_SOURCE
    CPPFLAGS+ = -D_XOPEN_SOURCE
    CPPFLAGS+ = -I.
    CPPFLAGS+ = -I../include
    CPPFLAGS+ = -I../../../external/zlib
    CFLAGS+ = -O2 -g -Wall -Wno-unused-parameter
    LDFLAGS = -static
    LIBS = -lrt -lpthread
    TOOLCHAIN = arm-none-linux-gnueabi-
    CC = $(TOOLCHAIN )gcc
    LD = $(TOOLCHAIN )gcc
    OBJS = $(SRCS:.c =.o )
    all: adb
    adb: $(OBJS )
    $(LD ) -o $@ $(LDFLAGS ) $(OBJS ) $(LIBS )
    clean:
    rm -rf $(OBJS )
     
     
    • 0
      点赞
    • 3
      收藏
      觉得还不错? 一键收藏
    • 0
      评论
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值