Linux系统编译Win32版本adb
源码版本:android 7.0
步骤1:source build/envsetup.sh
步骤2:lunch
步骤3:选择编译设备目标
步骤4:make adb USE_MINGW=y
下面是应对编译失败的对策:
错误:没有规则创建AdbWinApi.a
很奇葩的一个错误,即使手动拷贝至
out/host/windows-x86/obj32/STATIC_LIBRARIES/AdbWinApi_intermediates
也是无解
只好自己手动写Makefile,使用android源码里面的mingw工具链来编译了
1. 将out/host/windows-x86/obj32/STATIC_LIBRARIES/里面的静态库拷贝出来备用
2.书写makefile
1 all:adb 2 3 CXX := android_source/prebuilts/gcc/linux-x86/host/x86_64-w64-mingw32-4.8/bin/x86_64-w64-mingw32-g++ -m32 4 STRIP := android_source/prebuilts/gcc/linux-x86/host/x86_64-w64-mingw32-4.8/bin/x86_64-w64-mingw32-strip 5 adb_version := edd2a148a60c-android 6 CFLAGS := \ 7 -Wall -Werror \ 8 -Wno-unused-parameter \ 9 -DADB_REVISION='"$(adb_version)"' \ 10 -D_GNU_SOURCE \ 11 -DADB_HOST=1 \ 12 -DHAVE_WINSOCK=1 \ 13 -std=c++11 14 INCLUDES := -I../include -I../base/include -Iandroid_source/development/host/windows/usb/api 15 LDLIBS := -L./lib -ladb -lbase -lcrypto_static -lcutils -llog -lAdbWinApi -lws2_32 -lgdi32 16 17 adb:adb_main.o console.o commandline.o adb_client.o services.o file_sync_client.o \ 18 usb_windows.o sysdeps_win32.o get_my_path_windows.o 19 ${CXX} $^ -o $@ ${LDLIBS} 20 ${STRIP} $@ 21 cp -f $@ $@.exe 22 23 %.o:%.cpp 24 ${CXX} $< -c -o $@ ${INCLUDES} ${CFLAGS} 25 26 .PHONY:clean 27 clean: 28 rm -rf *.o
其中的lib文件夹保存的是上一步备用的静态库文件
android_source是android的源码目录,需要使用全路径
3. cd到adb所在目录执行
cd android_source/system/core/adb
make adb