apt-get source adb 下载下来的代码能直接编译Windows版吗?

最大的社区版本,Ubuntu的发源地
回复
头像
astolia
论坛版主
帖子: 6396
注册时间: 2008-09-18 13:11

Re: apt-get source adb 下载下来的代码能直接编译Windows版吗?

#2

帖子 astolia » 2017-10-10 20:31

可以。
教程说的是整合好的android完整源码,不是你下载的platform-system-core那一小部分。
自己去看 https://github.com/android 下面包含了多少组件。build目录是在platform_build组件内
科学之子
帖子: 2284
注册时间: 2013-05-26 6:58
系统: Debian 9

Re: apt-get source adb 下载下来的代码能直接编译Windows版吗?

#3

帖子 科学之子 » 2017-10-10 20:44

astolia 写了:可以。
教程说的是整合好的android完整源码,不是你下载的platform-system-core那一小部分。
自己去看 https://github.com/android 下面包含了多少组件。build目录是在platform_build组件内
现在梯子坏了暂时没法看
仅用"apt-get source adb"下载下来的这部分东西能完成build吗?
头像
astolia
论坛版主
帖子: 6396
注册时间: 2008-09-18 13:11

Re: apt-get source adb 下载下来的代码能直接编译Windows版吗?

#4

帖子 astolia » 2017-10-10 21:06

不能。
https://github.com/qmfrederik/adb-win64 抓了个makefile

代码: 全选

# ADB makefile
# ------------

#TODO change TOOLCHAIN variable to your toolchain path 
TOOLCHAIN= /usr/bin/x86_64-w64-mingw32-
CC= $(TOOLCHAIN)gcc
LD= $(TOOLCHAIN)gcc
CXX=$(CC)

LOCAL_PATH:= $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
adb_version := $(shell git -C $(LOCAL_PATH) rev-parse --short=12 HEAD 2>/dev/null)-android

VPATH+= ../../../../
SRCS+= AdbWinUsb.c
SRCS+= usb_none.c

SRCS+= ../../../../openssl-1.0.2j/ms/applink.c

#SRCS+= usb_windows.c
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_windows.c
SRCS+= services.c
SRCS+= sockets.c
SRCS+= transport.c
SRCS+= transport_local.c
SRCS+= transport_usb.c
# SRCS+= usb_vendors.c
SRCS+= sysdeps_win32.c
SRCS+= adb_utils.c
SRCS+= adb_io.c
SRCS+= adb_auth.c
# SRCS+= adb_auth_client.c
SRCS+= adb_auth_host.c
SRCS+= adb_listeners.c
# SRCS+= adb_main.c
SRCS+= shell_service_protocol.c
SRCS+= client/main.c
SRCS+= line_printer.c
SRCS+= fdevent.c
SRCS+= adb_trace.c
SRCS+= diagnose_usb.c
SRCS+= logger_name.c

VPATH+= ../base
SRCS+= file.c
SRCS+= stringprintf.c
SRCS+= strings.c
SRCS+= logging.c
SRCS+= utf8.c
SRCS+= errors_windows.c
SRCS+= parsenetaddress.c

VPATH+= ../liblog
# SRCS+= logd_write.c
SRCS+= fake_log_device.c
#SRCS+= log_event_write.c
SRCS+= logger_write.c
SRCS+= config_write.c
SRCS+= logger_lock.c
SRCS+= fake_writer.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+= ../libutils
SRCS+= FileMap.c

VPATH+= ../libziparchive
SRCS+= zip_archive.c
 
VPATH+= ../../../external/zlib/src
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+= -D_mkdir=mkdir
CPPFLAGS+= -DADB_HOST=1
CPPFLAGS+= -DHAVE_FORKEXEC=1
#CPPFLAGS+= -DHAVE_SYMLINKS
#CPPFLAGS+= -DHAVE_TERMIO_H
CPPFLAGS+= -DHAVE_SYS_SOCKET_H
CPPFLAGS+= -D_GNU_SOURCE
CPPFLAGS+= -D_XOPEN_SOURCE
CPPFLAGS+= -std=gnu++11
CPPFLAGS+= -D_WIN32
CPPFLAGS+= -D_WIN32_WINNT=0x0600
CPPFLAGS+= -D__STDC_FORMAT_MACROS=1
CPPFLAGS+= -DHAVE_WIN32_PROC
CPPFLAGS+= -DHAVE_WIN32_IPC
CPPFLAGS+= -DHAVE_WINSOCK
CPPFLAGS+= -DHAVE_OFF64_T
CPPFLAGS+= -DADB_REVISION='"$(adb_version)"'
CPPFLAGS+= -DZLIB_CONST
CPPFLAGS+= -DADBWIN_EXPORTS
CPPFLAGS+= -DFAKE_LOG_DEVICE=1
CPPFLAGS+= -DADB_REVISION='"$(adb_version)"'
CPPFLAGS+= -I.
CPPFLAGS+= -I../include
CPPFLAGS+= -I../../../external/zlib
CPPFLAGS+= -I../../../../openssl-1.0.2j/include
CPPFLAGS+= -I../base/include 
CPPFLAGS+= -I../../../platform/development/host/windows/usb/api/
CPPFLAGS+= -D__BEGIN_DECLS=/**/
CPPFLAGS+= -D__END_DECLS=/**/
CFLAGS+= -O2 -g -Wall -Wno-unused-parameter

LDFLAGS+= -L../../../../openssl-1.0.2j -static-libstdc++ -static-libgcc
LDFLAGS+= -municode
LIBS= -lcrypto -lpthread -lws2_32 -lgdi32
LIBS+= -static -lstdc++
#LIBS+= -lrt 
 
OBJS= $(SRCS:.c=.o)
 
all: adb.exe
 
adb.exe: $(OBJS)
	$(LD) -o $@ $(LDFLAGS) $(OBJS) $(LIBS)
 
clean:
rm -rf $(OBJS)
从里面看,编译需要有三个外部依赖库。zlib,openssl和platform_development组件里的usb库
不过platform_development你可以通过 apt-get source etc1tool来下载
回复