Table of Contents
现在很多ARM设备支持ADB,比如4G模块。
经过测试,android-4.4_r1.2分支可以编译成功。
1 2 3 4 5 |
$ git clone https://android.googlesource.com/platform/system/core system.core.git $ cd system.core.git/adb $ git checkout android-4.4_r1.2 |
建立一个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 70 71 72 73 74 75 76 77 78 79 80 |
# standalone Makefile for adb SRCS+= adb.c SRCS+= fdevent.c SRCS+= adb_client.c SRCS+= commandline.c SRCS+= console.c SRCS+= file_sync_client.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+= adb_auth_host.c VPATH+= ../libcutils SRCS+= list.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 SRCS+= load_file.c VPATH+= ../libzipfile SRCS+= centraldir.c SRCS+= zipfile.c #VPATH+= ../../../external/zlib/src #VPATH+= ../../../../utils/zlib.git #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 CFLAGS+= -DADB_HOST=1 CFLAGS+= -DHAVE_FORKEXEC=1 CFLAGS+= -DHAVE_SYMLINKS CFLAGS+= -DHAVE_TERMIO_H CFLAGS+= -DHAVE_SYS_SOCKET_H CFLAGS+= -D_GNU_SOURCE CFLAGS+= -D_XOPEN_SOURCE CFLAGS+= -I. CFLAGS+= -I../include CFLAGS+= -I../../../external/zlib CFLAGS+= -I/data/utils/openssl.git/include CFLAGS+= -I/data/utils/zlib.git CFLAGS+= -lrt CFLAGS+= -O2 -g -Wall -Wno-unused-parameter LDFLAGS=-L/data/utils/openssl.git LDFLAGS+=-L/data/utils/zlib.git LIBS= -lcrypto -lz -lpthread CC?= $(TOOLCHAIN)gcc LD?= $(CROSS_COMPILE)gcc OBJS= $(SRCS:.c=.o) all: adb adb: $(OBJS) $(CC) -o $@ $(LDFLAGS) $(LIBS) $(OBJS) clean: rm -rf $(OBJS) |
其中zlib和openssl采用源码编译,动态链接
然后编译
1 2 3 4 |
$ file adb adb: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 2.6.32, BuildID[sha1]=831867194c1727b026972e4291d5020eb26966dc, not stripped |