@H_301_0@首先ubuntu上有混合编译器
@H_301_0@脚本make.sh,其内容如下:(myvir是我的虚拟机的名字)
@H_301_0@/home/myvir/my_ndk_toolchain/bin/arm-linux-androideabi-g++ \
@H_301_0@-g -o test test.cpp \
@H_301_0@-I /home/myvir/my_ndk_toolchain/include/c++/4.9/arm-linux-androidideabi/armv7-a \
@H_301_0@-I ./include \
@H_301_0@libopencv_calib3d.a libopencv_features2d.a \
@H_301_0@-std=c++11 -g -marm -fPIC -mfpu=neon -mfloat-abi=hard -march=armv7-a \
@H_301_0@-llog -Wl,--no-warn-mismatch
@H_301_0@
@H_301_0@如果对应的android版本是5.1以上,在Ubuntu上会报错,错误为:
@H_301_0@error:only position independent executables <PIE> are supported
@H_301_0@解决方法:-fPIC后面加上 -pie -fPIE;
@H_301_0@make.sh和test.cpp写好之后,两者在TEST文件下。在命令窗口写命令进入Test文件,然后输入./make.sh命令,就会生成一个二进制的可执行文件,将该文件从ubuntu上拷贝到电脑上(我放在了桌面上test的文件里,其路径为:c:/Users/Administrator/Desktop/test/test)。
@H_301_0@将可执行文件在Android上运行,可在电脑上写个脚本,新建一个TEST.txt,对其重命名将其改为TEST.bat,在该文件输入:
@H_301_0@adb shell mkdir /data/data/test (这是在android上./data/data上创建了一个test文件夹)
@H_301_0@adb shellc:/Users/Administrator/Desktop/test/test /data/data/test (这是将桌面上的test二进制可执行文件拷贝到android的 ./data/data/test文件下)
@H_301_0@adb shell chmod 777 ./data/data/test/test (这是对test改权限)
@H_301_0@adb shell ./data/data/test/test (运行android上的test可执行文件)
@H_301_0@adb shell rm -r ./data/data/test (这是删除包含test可执行文件的test文件夹)
@H_301_0@pause
@H_301_0@start
@H_301_0@上面是test.bat的全部内容。弄好以后,双击test.bat执行里面的全部内容了。简单方便