⑴ 如何在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語言 編程軟體,apk的
你牛了 你說有可能嗎?試一下wp8平板 這個wp8以後會有
⑶ 關於 Android C語言 開發
剛好最近我正在學習android可以幫到你。
1.java開發是Android的應用部分
2.C/C++語言開發是Android核心的部分
Android的C語言其實是指的Android底層的Linux內核開發,剛好你是學習Linux C語言的這樣就有用武之地。Android的底層是由Linux開發的,並建立在Linux之上的JAVA虛擬機來實現的。
所以要學習Android C語言的開發,建議看看《Android系統原理及開發要點詳解》著本書講的內容都是底層的內容,一定要買。不過JAVA語言的部分也一定要看,因為C語言做的驅動最後還是需要被JAVA虛擬機調用。
另外要做AndroidC語言開發還需要注意一下幾點:
1.需要購買開發板來學習,或者開源的手機,這樣可以直觀的了解驅動的運作模式和有效調試
2.需要下載android源代碼,因為Android SDK開發是不會用到C語言的
3.android的NDK開發其實也是C/C++語言調用一些函數來實現,建議也看
4.最後這個網址可以去看,多是講底層資料的:http://bbs.starandroid.com/showtopic.aspx?topicid=10712&page=end
建議:
1.JAVA還是要看的
2.建議往Android底層硬體開發走
⑷ C、C++、ANDROID、JAVA各有什麼區別
1、C和C++
如果樓主學完C,想在下面領域大展身手,那麼學C++吧
嵌入式開發、游戲開發、驅動開發、操作系統開發、數據挖掘、桌面軟體開發等。
(具有黑客潛質)。
2、C#
C --> C# --> ASP.NET(Web開發)--> windows Form(基於C#的桌面程序開發)
在中小型網站和應用方面比較吃得開。
3、JAVA
C --> JAVA --> servlet和JSP --> struts2、spring、hibenate三大框架
一般大型的企業級應用都是用JAVA,或者大型系統的前台。
4、android
C-->JAVA
它是手機操作系統,主要基於JAVA API開發,所以要學JAVA啦(尤其是JAVA的J2ME)
c#、c++、java、還是android?都有什麼區別?
(應用領域就不說了,在上面寫了)
1、C++:功能強大,控制起來比較麻煩(牛人就另說了),不是一種純面向對象的語言。
2、C#:其運行需要微軟.Net Framework的支持,從C和C++繼承而來的,是一種面向對象的語言,相對簡單。
3、JAVA:也是一種面向對象的語言,需要JDK的支持。
4、android:是一種手機操作系統,都在上面開發一些JAVA小程序
希望對你有幫助、、
⑸ android 如何啟動自己的c服務
01
首先,要在你的activity中啟動這個服務,代碼如下所示。
/*
* 啟動一個延遲線程
*/
Intent serviceIntent=new Intent();
serviceIntent.setClass(Welcome.this, HoutaiService.class);
startService(serviceIntent);
>02
這個時候你就要去寫你的服務了,如下圖所示,這是和寫的一個服務。
>03
注意,因為後台當中是沒有界面的,所以不需要繼承activity。但這個候你就會遇到一個問題就是如何與用戶互動呢,那麼下面就是一個方法。
代碼如下。
NotificationManager nm=(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
//2.實例化一個通知,指定圖標、概要、時間
Notification n=new Notification(R.drawable.ic_launcher,"智能退出",System.currentTimeMillis());
//3.指定通知的標題、內容和intent
Intent intent = new Intent();
PendingIntent pi= PendingIntent.getActivity(HoutaiService.this, 0, intent, 0);
n.setLatestEventInfo(HoutaiService.this, "你已連續使用網路超3小時", "為防止長時間空閑網路,已退出。如需打開,請重新打開應用", pi);
//指定聲音
n.defaults = Notification.DEFAULT_SOUND;
//4.發送通知
nm.notify(3, n);
>04
這段代碼的意思是通過安卓中的通知來與用戶進行交互。能夠達到提示用戶的目的,怎麼樣,是不是很簡單。
⑹ C語言可以做安卓開發嗎
Android底層是Linux操作系統,上層有個虛擬機,apk都是使用Java語言編寫的,就看你做什麼開發了,如果你想從事底層開發,比如驅動開發、內核開發,是使用C語言。
如果你想從事Android APP開發,使用Java語言。
如果你從事中間層、framework開發,使用Java、C++語言。
⑺ 如何在 Android 系統中用 C 語言編寫程序並執行
可以的,只要編譯器支持,C語言程序不像JAVA,最終都會被編譯器編譯成機器代碼的,所以關鍵是編譯器能不能編譯成相關CPU和操作系統支持的代碼。dos是的批處理是不支持的。編寫手機軟體目前主要還是用C和JAVA,C用得最多
⑻ android C/S模式應用系統如何搭建框架
我來簡單的說下,讓你容易理解:
1.系統物理架構
android客戶端------無線路由-------(web伺服器,資料庫)
2.技術選型
(android客戶端)--->Web伺服器(tomcat)--->資料庫(mysql等)
客戶端請求數據成功後,返回數據(可以通過Web Service、HTTP等方式進行網路通信)
(android客戶端)<---Web伺服器(tomcat)<-->資料庫(mysql等)
3.創建客戶端項目WirelessClient(到時安裝在手機端)和伺服器項目WirelessServer(安裝在web伺服器端PC機)。之後分別開發這兩端的項目,手機端用android的API,伺服器端用Java開發
這樣可以幫助你簡單的理解了嗎?
⑼ 如何在Android系統源碼中添加C項目
以hello_android為例,步驟如下:
1、在external目錄下創建hello_android目錄,然後在hello_android目錄中編寫hello_android C語言實現文件hello_android.h,hello_android.c:
(註:hello_android目錄可以放置在Android系統源碼下的任意目錄中,並非一定要在external下。)hello_android.h
#include<stdio.h>
#include<stdlib.h>void makePrintf(char *str)
{
printf("%s", str);
}hello_android.c
#include <stdio.h>
#include <stdlib.h>
#include "hello_android.h"int main(int argc, char** argv)
{
makePrintf("hello, android!\n");return 0;
}
2、編寫負責編譯的Android.mk文件:
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_SRC_FILES := hello_android.cLOCAL_C_INCLUDES += $(LOCAL_PATH)LOCAL_MODULE := hello_androidLOCAL_MODULE_TAGS := enginclude $(BUILD_EXECUTABLE)
3、利用mm編譯生成hello_android二進制可執行文件;
4、將helllo_android文件復制到/system/bin目錄下執行:
#./hello_android
hello, android!
5、代碼結構
$ pwd
external/hello_android
$ tree
⑽ 如何在安卓上用C語言
害哥搞這個離線包搞了個把小時。為了清楚,上個圖: 敲個LS,什麼東西都沒有,這個目錄是cygwin的安裝目錄下面的home文件夾下的用戶名文件夾。接下來是配置與Android相關的。在home/用戶名,這個文件夾下有一個文件為.bash_profile,打開它,到最後添加兩行NDK的環境變數:NDK_ROOT=/cygdrive/d/android-ndk-r6export NDK_ROOT上面的意思是,ndk的目錄是,d:/android-ndk-r6添加完之後,關閉Cygwin重新啟動一下,然後敲入cd $NDK_ROOT,是否進入到ndk的目錄了?否則就看看哪個字母錯了。在ndk的目錄下samples下有很多例子,隨便弄個就可編譯了。下面是新建一個項目,以對C語言在項目中的位置更清楚。打開Eclipse新建一個Android項目,取名hellojni,為了清晰,便於維護,及各種各樣的好處,JNI的JAVA代碼單獨一個類,單獨一個包。其實最好能不用JNI就別用JNI,這東西負作用巨大,特別是在用到JNI復雜的地方,什麼內存啊,類型啊,哪裡調用的方法,異常啊,可靠性都非常麻煩。非要用JNI的復雜功能,做好兩件事,做之前充分設計,設計之前充分學習一下JNI文檔。當然對於一些簡單的應用,那隻需要充分仔細。作好參數,返回值的檢查,記得釋放內存就行了。
打字不易,如滿意,望採納。