源码版本: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

 all:adb

 CXX := android_source/prebuilts/gcc/linux-x86/host/x86_64-w64-mingw32-4.8/bin/x86_64-w64-mingw32-g++ -m32
STRIP := android_source/prebuilts/gcc/linux-x86/host/x86_64-w64-mingw32-4.8/bin/x86_64-w64-mingw32-strip
adb_version := edd2a148a60c-android
CFLAGS := \
-Wall -Werror \
-Wno-unused-parameter \
-DADB_REVISION='"$(adb_version)"' \
-D_GNU_SOURCE \
-DADB_HOST= \
-DHAVE_WINSOCK= \
-std=c++
INCLUDES := -I../include -I../base/include -Iandroid_source/development/host/windows/usb/api
LDLIBS := -L./lib -ladb -lbase -lcrypto_static -lcutils -llog -lAdbWinApi -lws2_32 -lgdi32 adb:adb_main.o console.o commandline.o adb_client.o services.o file_sync_client.o \
usb_windows.o sysdeps_win32.o get_my_path_windows.o
${CXX} $^ -o $@ ${LDLIBS}
${STRIP} $@
cp -f $@ $@.exe %.o:%.cpp
${CXX} $< -c -o $@ ${INCLUDES} ${CFLAGS} .PHONY:clean
clean:
rm -rf *.o

其中的lib文件夹保存的是上一步备用的静态库文件

android_source是android的源码目录,需要使用全路径

3. cd到adb所在目录执行

cd android_source/system/core/adb

make adb

Linux系统编译Win32版本adb的更多相关文章

  1. Linux系统CentOS6.2版本下安装JDK7详细过程

    Linux系统CentOS6.2版本下安装JDK7详细过程 分类: Linux 2014-08-25 09:17 1933人阅读 评论(0) 收藏 举报 前言:        java 是一种可以撰写 ...

  2. 带你领略Linux系统发展及版本更迭

    Linux的出现是在1991年,Linus Torvalds的学生开发的,最初的Linux是类似Unix操作系统,可用于386,486或奔腾处理器的计算机上.Linus Torvalds是一个伟人,他 ...

  3. 关于windows和linux系统更换JDK版本后,修改环境变量也无法生效的原因和解决办法

    今天遇到了一个问题: 我linux系统之前安装JDK12,今天将其改成了JDK1.8,并修改了环境变量,但是通过java -version命令显示的依旧是JDK12的版本. 这是因为,当使用安装版本的 ...

  4. linux 重新编译低版本gcc

    编程实践中,可能会遇到需要较低版本gcc以兼容相应程序的需求,这时就需要我们将系统中默认的gcc版本较低,或者重新编译生成.(UBUNTU12.04下实现gcc4.2.3) 方法1: 对于UBUNTU ...

  5. 查看linux系统类型、版本、位数

    如何查看LINUX操作系统是多少位的 方法1: 查看linux是不是64位的命令! file /sbin/init 结果会出来 xx bit 方法二: # getconf LONG_BIT32getc ...

  6. [linux系统]查看内核版本和系统版本方法

    查看内核版本信息的两个命令: uname -a cat /proc/version 查看系统版本的命令: lsb_release -a more /etc/issue cat /etc/redhat- ...

  7. Linux系统如何查看版本信息

    输入"uname -a ",可显示电脑以及操作系统的相关信息.   输入"cat /proc/version",说明正在运行的内核版本.   输入"c ...

  8. LFS,编译自己的Linux系统 - 编译临时系统

    编译GCC-4.8.2 PASS 1 解压并重命名 cd /mnt/lfs/sources tar -Jxf ../mpfr-3.1.2.tar.xz mv mpfr-3.1.2 mpfr tar - ...

  9. 关于Linux系统下jdk版本切换问题(alternatives命令的使用)

    [root@danny lib]# cd /usr/lib/jvm [root@danny jvm]# [root@danny jvm]# ls java java--openjdk-.b13.el7 ...

随机推荐

  1. [osg]osgDB的加载机制,使用3DS插件做参考(转,整理现有osgDB资料)

    参考:http://blog.sina.com.cn/s/blog_7cdaf8b60102uzu3.html http://blog.csdn.net/wang15061955806/article ...

  2. RabbitMQ入门_03_推拉模式

    我们知道,消费者有两种方式从消息中间件获取消息: 推模式:消息中间件主动将消息推送给消费者 拉模式:消费者主动从消息中间件拉取消息 推模式将消息提前推送给消费者,消费者必须设置一个缓冲区缓存这些消息. ...

  3. MAC终端安装grunt--javascript世界得构建工具

    祝贺我成为前端啦!~~从年前得小测试到今年得前端,成功转型!我真是一个进步得好青年,好少女! 这两天出去受虐,面了两家前端,表现非常不好,还是回到我现在得公司好好沉淀技术,做前端,要经常性得整理总结, ...

  4. (GoRails) Credential

    之前的博客:https://www.cnblogs.com/chentianwei/p/9167489.html Guide:  https://guides.rubyonrails.org/secu ...

  5. 浅谈jsonp

    要谈jsonp,首先要弄明白jsonp是什么,它是用来干嘛的.jsonp其实就是我们常用的script标签,用来解决跨域的,只不过这个标签是动态创建的,为啥要动态创建涅. 举个小栗子: 假如我们远程文 ...

  6. SGU 141.Jumping Joe 数论,拓展欧几里得,二元不等式 难度:3

    141. Jumping Joe time limit per test: 0.25 sec. memory limit per test: 4096 KB Joe is a frog who lik ...

  7. HALCON之喷码OCR识别案例

    一个喷码识别的案例 1 read_image (Image, 'D:/用户目录/Desktop/2.png') 2 3 rgb1_to_gray(Image, Image) 4 5 get_image ...

  8. Nvidia Driver

    https://www.if-not-true-then-false.com/2015/fedora-nvidia-guide/ https://javacodes.cn/322.html https ...

  9. CMD中goto语句会中断for循环特性详解

    在这个程序里面由于用到了上篇文章中所说的字符串切割,而用到了Goto强制跳转语句 但是在程序中使用的时候却发现一个错误,当把这个字符切割的代码段如果直接作为非嵌套语句执行正常 但是一旦放到for循环的 ...

  10. scrollTop和scrollLeft属性

    外层元素的高度值是200px,内层元素的高度值是300px.很明显,“外层元素中的内容”高过了“外层元素”本身.当向下拖动滚动条时,有部分内容会隐没在“外层元素的上边界”之外,scrollTop就等于 ...