UNIX上的C语言向Android的JNI代码移植真辛苦
这周进行了一周的代码移植,将UNIX上的几万行代码移植到Android中供JNI调用。起初觉得并不难,看了代码以后就狂恶心了一通.这段代码是用做多个平台的,里面定义了无数个编译开关,有用的没用的乱七八糟一大堆,我的头顿时大了起来。
先是查make文件,找flags文件以及configure文件,从里面找编译编译时要使用的开关选项,然后打开一堆窗口,先是手动查找,接下来手动将不需要的选项删除,狂删了几个小时,#if,#ifdef,#ifndef.....一通乱删乱砍之后,开始有些不放心,那对比工具一条条对比,可是量实在太大了,半天下了,头晕眼花.妈的,心中懊恼。决定写一个工具来删编译开关,熬了两夜,写了一个简版的工具,还算好用.但工具无法覆盖所有的情况,妈妈的,受了罪了.
强搞了几天,累得头晕目眩,把代码码到Android中用ndk-build来编译,结果报错报得一塌糊涂,简直要疯了.看来开关选项还得继续删.
偶然发现,代码里UNIX的语法与GCC有差异,天啊,函数的命名方式很不同啊。侥幸心理试着该了一下,gcc竟然不报错,嘿嘿,有门。可是函数太多了,那怎么办?熬夜继续改吧......又是熬夜.....改完了,在gcc上可以编译过了,拿到Android上用ndk-build编译,依然是报错连片,痛苦,死的心都有.
又是偶然发现,啊,找到了方法,呵呵,我有办法了。明天是十一,要回家看老婆孩子了,归心似箭,不睡了,继续搞,这样可以打发时间,到飞机上去睡,一定睡得很香。每次坐飞机总是讨厌几个小时太难熬,这下我一夜不睡,明天坐飞机就可以睡死过去了,醒过来的时候就可以看到我的帅哥儿子啦,呵呵!