拿到一个全志Tina的板子还有一个SDK压缩包,要求我这周(只剩一天半。。。)就要把sdk编译通过并且把板子跑起来。
还特别跟我说他们试了下这个sdk编译没法通过,会报错。。。
竟然是有坑!
————————————————————————————————————————————————————————————————
准备工作:
拷贝解压SDK
阅读Guide手册(如何配置环境,如何编译,如何烧录)
读完了接下来正式开工
第一步,配置编译环境。
但是老子是ssh远程编译服务器编译,没有全向apt-install,问老大,老大说应该配好了,叫我先编译一下试试看。
应该?好吧,先略过。
第二步,编译
还好编译的时候回自动检测编译环境是否配置ok。
按照手册开始一步一步编译,问了下公司的服务器只有4核,为了不影响其他人使用,在这里只能make-j4编译。
之后就是等待结果。。同时可以去找找烧录套件准备硬件连接。
$tar-xvfHomlet-Tina-H2_H3$cdHomlet-Tina-H2_H3$sourcebuild/envsetup.sh$lunchdolphin_p1-tina$make–j4
编译了大概13分钟之后就Error报错了!
停止编译了!
打开mxmlds.c看一下,含有以下几个头文件其中tree.h和parser.h都包含了encoding.h
#include
看下头文件
现在报错找不到unicode/ucnv.h说明这个宏被人定义了,但是在sdk目录下搜索LIBXML_ICU_ENABLED关键字的文件只有两个,其中xmlversion.h明确屏蔽了这个宏
./package/allwinner/liballwinner_tina/liballwinner/LIBRARY/EXTERNAL/include/libxml/encoding.h./package/allwinner/liballwinner_tina/liballwinner/LIBRARY/EXTERNAL/include/libxml/xmlversion.h/***LIBXML_ICU_ENABLED:**Whethericusupportisavailable*/#if0#defineLIBXML_ICU_ENABLED#endif
上面两个文件和指定目录的文件是同一个类型,只是不同版本,查看指定路径头文件/usr/include/libxml2/libxml/xmlversion.h,发现里面打开了这个宏。
/**281*LIBXML_ICU_ENABLED:282*283*Whethericusupportisavailable284*/285#if1286#defineLIBXML_ICU_ENABLED287#endif原本可以在指定的头文件里屏蔽掉这个宏重新编译就可以了。
但是这个是编译服务器的系统头文件
首先没有权限修改。
其次为了编译某个项目屏蔽公用的头文件功能对别人使用会有影响。
最重要的是这个sdk编译完了要打包烧录到arm板子上,最好不要依赖牵涉宿主机上的东西,所有依赖自带并打包才更符合逻辑。
--------------------------------------------------------------------------------------------------------------------------------------------------
问题原因找到了,解决办法就是修改头文件指定目录。
现在需要找到头文件路径设置的地方进而修改。
整个sdk编译走的都是Makefile结构,头文件路径有些是从父级环境变量继承下来的,有些是子目录源码自己添加的。
查看出问题的源码Makefile发现了CPPFLAGS里面就是包含了刚才那个系统头文件目录
/usr/include/libxml2/libxml但是改这个Makefile是没有任何意义的,因为Makefile文件是configure之后自动产生的,所以这个应该问题和configure有关
看下源码libmgncs-1.2.0目录下的configure文件(重新解压未编译过的)果然发现了里面自带的configure.as包含这个固定路径
iftest"x$build_datasource_xml"="xyes";thenAC_DEFINE(_MGNCSDB_DATASOURCE,1,[Defineifsupportdatasource])AC_DEFINE(_MGNCSDB_XML,1,[Defineifsupportxmldatasource])CPPFLAGS="$CPPFLAGS-I/usr/include/libxml2"fi现在只要把这个头文件地址改到自己指定的libxml2目录就可以了
CPPFLAGS="$CPPFLAGS-I../../../../package/allwinner/liballwinner_tina/liballwinner/LIBRARY/EXTERNAL/include/libxml"