当前位置:首页 » 安卓系统 » c移植android

c移植android

发布时间: 2022-09-21 06:07:19

Ⅰ 如何将opencv的C++源程序移植到Android 平台上

opencv本身是跨平台的,有各个平台,包括android/ios的版本。
所以基于标准OpenCV接口开发的代码,少量修改就可以移植到其他平台。

首先下载一个android版本的opencv
然后基于NDK编译它里面有一些demo,是调用OpenCV的标准C++接口实现的,按照你的需求查看对应的demo,按照这些demo的方式,把你的c++代码移植过来,理论上来说此部分只需要很少改动。

Ⅱ 如何在Android系统上运行c语言的程序

本人使用mini6410开发了一个sqlite数据库的程序,在mini6410的linux系统下已经能够成功运行了。因为Android使用的也是linux内核,所以我想当然的认为按照同样的方法将程序移植到mini6410的android系统中也可以成功运行,但是当我运行程序的时候却提示我不能找到可执行文件(xlisten-arm是交叉编译出来的可执行文件): / # ./xlisten-arm /system/bin/sh: ./xlisten-arm: not found 1.探索: 在网上搜索起初认为可能是库文件的不全导致的,于是在查看可执行文件xlisten-arm所需要的动态链接库: 执行语句: # arm-linux-readelf -a ./xlisten-arm grep "Shared" 0x00000001 (NEEDED) Shared library: [libsqlite3.so.0] 0x00000001 (NEEDED) Shared library: [libm.so.6] 0x00000001 (NEEDED) Shared library: [libcrypt.so.1] 0x00000001 (NEEDED) Shared library: [libpthread.so.0] 0x00000001 (NEEDED) Shared library: [libdl.so.2] 0x00000001 (NEEDED) Shared library: [libc.so.6] 知道所需的动态链接库后,到android文件系统中去照着写库文件,在目录/system/lib 中,果然缺少相应的库文件,于是认为找到了我问题的根源所在,在复制相应库文件的时候为了保留原来的属性,还特意用了 #cp -a filename dir 谁知将这些库都添加进去以后,仍然无济于事! 看来不仅仅事库文件缺失的问题了,而且一般来说,如果真的是因为缺少库文件而导致的问题,终端会提示我们链接某库文件时没有找到该库文件。 2.正确的解决方法: 将程序编译的时候选择静态编译,即使用选项 -static 我是对Makefile文件中的CFLAG变量进行修改 CFLAGS = -Wall 改为; CFLAGS = -Wall -static 然而此时又出现问题了: undefined reference to `pthread_mutex_*' undefined reference to `dl*' 提示没有定义这些函数,于是在包含的库文件中添加了这两个库文件 在Makefile中,修改LIBS变量; LIBS = -lsqlite3 -lm -lcrypt 改为: LIBS = -lsqlite3 -lm -lcrypt -lpthread -ldl 然后进行交叉编译,成功了! 编译出来的可执行文件比较大,因为事静态编译的,我的有2M多, 拷贝到开发板的andriod系统中, 修改权限: #chmod 777 xlisten-arm 执行: / # ./xlisten-arm OK!能够正确的执行了!

Ⅲ 我原先用C++写的算法,现在想移植到Android机中,求助

android程序基本是java写的,但为了能让C/C++代码运行于android上弥补JAVA运行效率低的缺点,android提供了 NDK,可以把C/C++的代码移植到 android上。

Ⅳ 如何在Android系统上运行C语言的程序

本人使用mini6410开发了一个sqlite数据库的程序,在mini6410的linux系统下已经能够成功运行了。因为Android使用的也是linux内核,所以我想当然的认为按照同样的方法将程序移植到mini6410的android系统中也可以成功运行,但是当我运行程序的时候却提示我不能找到可执行文件(xlisten-arm是交叉编译出来的可执行文件):

/ # ./xlisten-arm
/system/bin/sh: ./xlisten-arm: not found

1.探索:

在网上搜索起初认为可能是库文件的不全导致的,于是在查看可执行文件xlisten-arm所需要的动态链接库:

执行语句:

# arm-linux-readelf -a ./xlisten-arm | grep "Shared"
0x00000001 (NEEDED) Shared library: [libsqlite3.so.0]
0x00000001 (NEEDED) Shared library: [libm.so.6]
0x00000001 (NEEDED) Shared library: [libcrypt.so.1]
0x00000001 (NEEDED) Shared library: [libpthread.so.0]
0x00000001 (NEEDED) Shared library: [libdl.so.2]
0x00000001 (NEEDED) Shared library: [libc.so.6]

知道所需的动态链接库后,到android文件系统中去照着写库文件,在目录/system/lib 中,果然缺少相应的库文件,于是认为找到了我问题的根源所在,在复制相应库文件的时候为了保留原来的属性,还特意用了

#cp -a filename dir

谁知将这些库都添加进去以后,仍然无济于事!

看来不仅仅事库文件缺失的问题了,而且一般来说,如果真的是因为缺少库文件而导致的问题,终端会提示我们链接某库文件时没有找到该库文件。

2.正确的解决方法:

将程序编译的时候选择静态编译,即使用选项 -static

我是对Makefile文件中的CFLAG变量进行修改

CFLAGS = -Wall

改为;

CFLAGS = -Wall -static

然而此时又出现问题了:

undefined reference to `pthread_mutex_*'

undefined reference to `dl*'

提示没有定义这些函数,于是在包含的库文件中添加了这两个库文件

在Makefile中,修改LIBS变量;

LIBS = -lsqlite3 -lm -lcrypt

改为:

LIBS = -lsqlite3 -lm -lcrypt -lpthread -ldl

然后进行交叉编译,成功了!

编译出来的可执行文件比较大,因为事静态编译的,我的有2M多,

拷贝到开发板的andriod系统中,

修改权限:

#chmod 777 xlisten-arm

执行:

/ # ./xlisten-arm

OK!能够正确的执行了!

Ⅳ 如何把一个C++的源程序移植到Android上

用NDK编译成so,并写jni接口以便给java调用。
如果用NDK编译?
1、到android开发网下载NDK开发包,里面有document
2、把opencv用NDK的方法编译可以通过以下的思路:
(1)第一种方法:看看opencv官方的编译文档,是否已经支持NDK的编译脚本或选项,如果有,直接按官方说明进行
(2)第二种方法:使用交叉编译的方法,即NDK文档里介绍的使用make-standalone-toolchain.sh的方法,这种方法很适合使用autoconf(即./configure)的项目
(3)第三种方法:根据NDK文档所说,自己手工写Android.mk和Application.mk,适合小型项目。

Ⅵ C语言 编写的程序怎么移植到手机上

android系统?还是ios?
android开发是用的java,如果想使用c,有两种方式,一种将c语言编译成.so文件,在android程序中加载,或者可以使用JNI直接调用c函数。

Ⅶ 自己用C语言编了个程序能放入安卓手机使用么

两种方法:
1.
JNI。在安卓上层通过JNI调用底层c的程序。
2.
把c语言改成JAVA。
你的程序是不能直接放在手机里面运行的,不过你可以把你的c文件放到手机里,用C4droid这个安卓程序运行。

Ⅷ 标准C程序如何移植到android平台需要什么编译参数,我用的是arm-eabi-gcc工具链

首先 你编译的程序 用cat命令看 目录应该是/lib/libc.so.6 而Android 是 /system/lib/libc.so
本来已经有C库了 但是 我这里没有用~ 你可以在 你的PC安装机子上找到 交叉编译arm-eabi-gcc或 arm-linux-gcc安装目录下的arm/4.3.2/..../libc/lib/libc2.8.so好像 是这个 有一个是libc.so.6 这个是一个连接 不是文件 查看属性 看下连接的文件应该是 那个libc2.8.so (放心它是arm版的)拷贝这个文件到 安卓/system/lib/去 然后
用RE文件 为它添加一个 连接 /system/lib/libc.so.6 就可以了
这样 标准库是被移植去了 但是 你的应用程序 有可能使用的是 /lib/libc.so.6 不是 /system/lib/libc.so.6
先测试不行的话 就把 /system/lib 连接为/lib

Ⅸ linux posix标准C程序,移植到android的时候,怎么解决两个平台库兼容问题

这个很不容易,不是直接重新编译就行。

许多的代码也都必须重新编写。
奉劝您别花那麽多的时间。如果您真的想试验一下,那麽可以看一下这一篇:
http://www.hacker.com.cn/show-13-213-1.html

Ⅹ 如何将自己编写的C和OPENCV程序在android手机上运行

可以直接在手机上运行。android专业开发肯定都是直接用真机运行项目的。
运行方式:
1. 手机打开 USB调式模式(不同的手机操作可能打开方式不一样)
2. 将手机连接到电脑,
3. 电脑上安装手机USB驱动程序
4. 运行android 应用
点击工程 run as android application后,系统就会查找已经连接到电脑的设备,选择已经连接的设备即可运行在手机上了。

热点内容
手机手势密码忘了怎么办 发布:2025-01-12 17:14:51 浏览:486
这手机配置有什么颜色的电视机 发布:2025-01-12 17:02:19 浏览:933
阁源码 发布:2025-01-12 16:48:08 浏览:131
组装机箱搭建服务器 发布:2025-01-12 16:46:58 浏览:512
风险资产配置理论有哪些 发布:2025-01-12 16:46:13 浏览:982
小程序分销源码 发布:2025-01-12 16:42:41 浏览:48
linux查看系统硬件 发布:2025-01-12 16:34:26 浏览:969
安卓手机怎么设置独享标志 发布:2025-01-12 16:27:56 浏览:933
我的世界如何把材质包放进服务器 发布:2025-01-12 16:11:14 浏览:57
使用hmailserver搭建邮件服务器 发布:2025-01-12 16:05:43 浏览:810