MySQL 移植编译 移植tree到安卓手机

Posted 上下博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL 移植编译 移植tree到安卓手机相关的知识,希望对你有一定的参考价值。



Tree


Tree is a recursive directory listing command that produces a depth indented listing of files, which is colorized ala dircolors if the LS_COLORS environment variable is set and output is to tty. Tree has been ported and reported to work under the following operating systems: Linux, FreeBSD, OS X, Solaris, HP/UX, Cygwin, HP Nonstop and OS/2.
官网: http://mama.indstate.edu/users/ice/tree

安卓系统默认是没有tree命令的,所以需要交叉编译让安卓设备支持。


源码结构


.├── CHANGES├── color.c├── doc│ ├── tree.1│ ├── tree.1.fr│ └── xml.dtd├── file.c├── hash.c├── html.c├── INSTALL├── json.c├── LICENSE├── Makefile├── README├── strverscmp.c├── TODO├── tree.c├── tree.h├── unix.c└── xml.c
通过其中的Makefile文件可以知道,这是一个在Linux链接编译的程序,并且是使用的Make程序进行编译的,因为Makefile正是Make程序的描述文件。里面有一些Make程序规定的语法,比如:定义编译器,定义源码文件。
prefix = /usr

CC=gcc

VERSION=1.8.0TREE_DEST=treeBINDIR=${prefix}/binMAN=tree.1MANDIR=${prefix}/man/man1OBJS=tree.o unix.o html.o xml.o json.o hash.o color.o file.oCFLAGS=-ggdb -pedantic -Wall -DLINUX -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
上述是Makefile文件的内容,这里只截取了有用的部分。可以看到使用的编译器是gcc,然后定义了一些OBJS也就是一些引用。这些引用的源码在tree-1.8.0源码包里是有的。下面就是一些gcc编译的参数。


Make转NDK编译文件


前面的文章已经提到NDK编译的两个文件:android.mk、Application.mk 这里依然使用此种方式,后续会介绍CMakeFile方式的编译方法。


Android.mk


LOCAL_PATH := $(call my-dir)
LOCAL_MODULE := treeLOCAL_CFLAGS += -mstackrealignLOCAL_LDFLAGS += -mstackrealignLOCAL_SRC_FILES := tree.c unix.c html.c xml.c json.c hash.c color.c file.c strverscmp.cLOCAL_MODULE_FILENAME := libtreeinclude $(BUILD_EXECUTABLE)
这里加入了 -mstackrealign 主要是为了绕过PIE验证


Application.mk


APP_ABI := x86APP_CPPFLAGS := -frtti




编译


C:\Users\Administrator\Desktop\tree-1.8.0>ndk-build NDK_PROJECT_PATH=. NDK_APPLICATION_MK=Application.mk APP_BUILD_SCRIPT=Android.mkfcntl(): Bad file descriptorAndroid NDK: APP_PLATFORM not set. Defaulting to minimum supported version android-16.[x86] Compile : tree <= tree.c[x86] Executable : libtree[x86] Install : libtree => libs/x86/libtree




上传&&测试




版本&&编译环境


ndkVersion :"22.0.7026061"编译平台 :Windows 10
后续如果有时间的话,会单独出一篇文章讲解一下NDK高低版本的区别,以及一些注意的点。





以上是关于MySQL 移植编译 移植tree到安卓手机的主要内容,如果未能解决你的问题,请参考以下文章

如何移植android2.1源代码到自己的手机上

ffmpeg系列之移植到安卓中调用

将涓流移植到安卓

安卓ROM移植教程

应该使用哪个编译器将 C 代码移植到 ARM?

Demo见真章将安卓的Retrofit移植到鸿蒙系统上,在鸿蒙系统上实现一套网络请求框架