macos下命令行通过ndk编译android下可以执行的ELF程序(并验证opencl的调用)

源码如下,实现把一个JPG保存成灰度图格式的BMP

 1 //jpg2bmp.cpp
 2 #include <stdio.h>
 3 #include <inttypes.h>
 4 #include <opencv2/opencv.hpp>
 5 #include <opencv2/core.hpp>
 6
 7 #ifndef P
 8 #define P(format, ...) do  9   { 10     printf("%s %s %d " format "\n", __FILE__, __FUNCTION__, __LINE__, ##__VA_ARGS__); 11     fflush(stdout); 12   } 13   while (0);
14 #endif
15
16 int main(int argc, char* argv[]){
17     if (argc<3){
18         printf("usage:%s <from> <to>\n", argv[0]);
19         return 0;
20     }
21     cv::Mat image = cv::imread(argv[1], cv::IMREAD_UNCHANGED);
22     cv::UMat u_img = image.getUMat(cv::ACCESS_READ);
23     if (image.empty()){
24         P("load pic %s fail", argv[1]);
25         return -1;
26     }
27     cv::UMat bmp;
28     cv::cvtColor(u_img, bmp, cv::COLOR_BGR2GRAY);
29     cv::imwrite(argv[2], bmp);
30     P("ok");
31     return 1;
32 }

编译命令行如下:

1 /Users/ahfu/code/android/android-ndk-r14b/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-g++  2     -o jpg2bmp_1.o -c jpg2bmp_1.cpp -pie -fPIC 3     -I"/Users/ahfu/code/android/OpenCV-android-sdk/sdk/native/jni/include" 4     --sysroot=/Users/ahfu/code/android/android-ndk-r14b/platforms/android-22/arch-arm/ 5     -I"/Users/ahfu/code/android/android-ndk-r14b/sources/cxx-stl/gnu-libstdc++/4.9/include" 6     -I"/Users/ahfu/code/android/android-ndk-r14b/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi-v7a/include/"

链接命令行如下:

1 /Users/ahfu/code/android/android-ndk-r14b/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-g++ 2     -o jpg2bmp_1 jpg2bmp_1.o -pie -fPIC 3     --sysroot=/Users/ahfu/code/android/android-ndk-r14b/platforms/android-22/arch-arm/ 4     -L"/Users/ahfu/code/android/OpenCV-android-sdk/sdk/native/staticlibs/armeabi-v7a" -lopencv_core -lopencv_imgcodecs -lopencv_imgproc -lm -lz -landroid -llog 5     -L"/Users/ahfu/code/android/OpenCV-android-sdk/sdk/native/3rdparty/libs/armeabi-v7a/" -ltegra_hal -lcpufeatures -ltbb -llibpng -llibjpeg-turbo -llibtiff -llibjasper -llibwebp -lIlmImf -lopencv_core -lopencv_imgcodecs -lopencv_imgproc -ltegra_hal 6     -L"/Users/ahfu/code/android/android-ndk-r14b/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi-v7a" -lgnustl_static -lsupc++ 7     -L"/Users/ahfu/code/android/android-ndk-r14b/platforms/android-22/arch-arm/usr/lib" -lstdc++

然后使用adb上传
adb root  #手机必要要root
adb push jpg2bmp 1.jpg /data/data/temp
adb shell
  cd /data/data/temp
  chmod +x jpg2bmp
  ./jpg2bmp 1.jpg 2.bmp

#执行成功

ndk版本是:android-ndk-r14b
opencv android sdk版本是:opencv-3.4.6-android-sdk.zip

原文地址:https://www.cnblogs.com/ahfuzhang/p/10948967.html

时间: 2024-10-09 18:34:25

macos下命令行通过ndk编译android下可以执行的ELF程序(并验证opencl的调用)的相关文章

iOS系统提供开发环境下命令行编译工具:xcodebuild

iOS系统提供开发环境下命令行编译工具:xcodebuild[3] xcodebuild 在介绍xcodebuild之前,需要先弄清楚一些在XCode环境下的一些概念[4]: Workspace:简单来说,Workspace就是一个容器,在该容器中可以存放多个你创建的Xcode Project, 以及其他的项目中需要使用到的文件. 使用Workspace的好处有: 1),扩展项目的可视域,即可以在多个项目之间跳转,重构,一个项目可以使用另一个项目的输出.Workspace会负责各个Project

不用Cygwin,不用命令行,Eclipse编译NDK

本文链接    http://blog.csdn.net/xiaodongrush/article/details/28908829 参考链接    http://www.cnblogs.com/chenjiajin/archive/2012/04/12/2444188.html 1. NDK版本要求 NDKr7或者更新,我是在NDKr9b上测试的. 2. Builder配置方法 首先,在Builders目录,点击New,新建一个Builder. 然后,选取创建Program类型的Builder

通过CMD命令行创建和使用Android 模拟器 AVD

进行Android APP测试时,若手持android手机设备稀少的情况下,我们可以通过创建Android模拟器AVD来代替模拟android手机设备,本文就具体介绍如何创建和使用AVD. 1.创建AVD         每个AVD模拟一套虚拟设备来运行Android应用程序.无论是在Eclipse下或者命令行下创建新的avd,系统会在系统默认文件路径下自动创建一个.android 文件夹,所创建的有关avd的配置信息则被保存在该.android目录下,如:        C:\Document

Phalcon下命令行应用(command line applications)

今天打算在phalcon项目下加入一个定时任务,来发送邮件. 看了官网的例子,配置和运行都少许杂乱,还有个bug,见备注, 我这边主要讲解如何将command line 的配置独立出来,如果初上手的同学,建议先运行官网第一个例子,成功后,再实践一下官网第二个例子,出现报错,就看我备注,然后再看我这如何将配置独立处理. 借鉴思想:主要借鉴Yii框架中,类似功能commands的配置console.php. 第一步:在app下的tasks文件夹下建三个文件: cl_config.php    //直

ubuntu 下命令行格式化 U盘 (转载)

ubuntu 下命令行格式化 U盘 命令行:原则是先卸载,后格式化. 假如u盘挂载在/media/disk上 卸载: sudo umount /media/disk 格式化: sudo mkfs.vfat /dev/sdb 可以用 sudo fdisk -l查看u盘是不是/dev/sdb. 不同的格式对应不同的格式化命令: mkfs mkfs.cramfs mkfs.ext3 mkfs.ext4dev mkfs.msdos mkfs.vfat mkfs.bfs mkfs.ext2 mkfs.ex

linux/mac下命令行rm回收站--rmtrash

linux.mac的命令行下没有回收站功能,很多时候手一抖就把重要文件给 rm -fr * 了,虽然linux下有可能通过lost +found/debugfs找回,但难度也比较大,不能保证一定能够找回.人总是会犯错,本人工作这几年也犯过3次rm -fr删除后后悔的错误,与其后悔不如防范于未然,像桌面操作系统(windows.mac os.Ubuntu)一样加个回收站机制就可以了,经过几天的努力终于实现了,放到github上了,欢迎使用. 源码地址:https://github.com/LaiJ

Ubuntu下命令行方式对PDF文件进行缩放、合并、拆分

安装软件: sudo aptitude install ghostscript 然后执行命令: gs -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -sOutputFile=new_file.pdf original_file.pdf PDFSETTINGS参数说明: /screen - 最低精度方式输出,因为屏幕展示所需的精度很低/ebook - 中等精度输出/printer

linux下命令行连接FTP是遇到的错误(425 Failed to establish connection)

linux下命令行连接FTP是遇到的错误(425 Failed to establish connection) 首先FTP的运行模式有主动模式和被动模式两种 然后笔者在工作中搭建了ftp,但是没有开启他的被动模式. 然后server端的防火墙开放了21端口. 因此客户端能连上server,但是输入命令会提示.(首先要数据passive off命令关闭客户端以被动模式连接server端) 原因是ftp在主动模式下是通过21端口进行登陆的,但是后续是通过20端口与客户端进行数据交换. 因此笔者在这

MacOS常用命令行工具

转自:https://blog.csdn.net/u014102846/article/details/77964493 https://ohmyz.sh/ https://github.com/robbyrussell/oh-my-zsh http://www.iterm2.cn/ https://github.com/robbyrussell/oh-my-zsh/wiki/themes iTerm2是Terminal的替代品,是一款比较小众的软件,比Terminal优秀太多了.下载官网为ht