當前位置:首頁 » 安卓系統 » 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 13:15:26 瀏覽:675
搭建國外伺服器需要多少錢 發布:2025-01-12 13:08:01 瀏覽:826
我的世界mod伺服器開荒 發布:2025-01-12 13:07:10 瀏覽:756
sql優化書 發布:2025-01-12 13:07:09 瀏覽:455
高校網站伺服器搭建與維護論文 發布:2025-01-12 13:06:31 瀏覽:710
sqlserver實例沒有 發布:2025-01-12 12:57:18 瀏覽:252
代碼文件伺服器地址怎麼寫 發布:2025-01-12 12:50:47 瀏覽:759
java中方法與 發布:2025-01-12 12:50:13 瀏覽:654
如何快速查找c語言編譯時的錯 發布:2025-01-12 12:49:56 瀏覽:31
看門狗上傳病毒 發布:2025-01-12 12:32:54 瀏覽:326