本文目錄一覽:
- 1、安卓系統上能運行c語言的程序嗎
- 2、有能在Android系統上運行的c語言編程軟體嗎,推薦一下
- 3、安卓手機上可以用的編程軟體c語言的系統有哪些?
- 4、c語言編寫的程序可以直接在安卓上運行嗎?是不是基本上安卓上所有的都要通過jvm解釋才能運行?
- 5、在android上用C語言
- 6、如何在Android系統上運行C語言的程序
安卓系統上能運行c語言的程序嗎
可以的,只要編譯器支持,C語言程序不像JAVA,最終都會被編譯器編譯成機器代碼的,所以關鍵是編譯器能不能編譯成相關CPU和操作系統支持的代碼。
dos是的批處理是不支持的。
編寫手機軟體目前主要還是用C和JAVA,C用得最多
有能在Android系統上運行的c語言編程軟體嗎,推薦一下
C4droid是款Android設備上的C/C++程序編譯器[2] ,默認以tcc(tiny c compiler)為編譯器,可以選擇安裝gcc插件(20mb,只有root用戶可以使用),選用gcc後,可以用sdl(簡單直控媒體層庫,需安裝sdl plugin for c4droid)和qt(nokia官方開發庫,需安裝sdl plugin for c4droid)。也可以開發native android app(需安裝sdl plugin for c4droid),就像google ndk一樣。軟體支持代碼高亮,編譯時間隨cpu主頻而定,主頻越高編譯越快。gcc插件版本4.7.2提供了示列程序,包含sdl,android native,qt和命令行測試程序源碼。
安卓手機上可以用的編程軟體c語言的系統有哪些?
C4droid\x0d\x0a\x0d\x0aC4droid是一個C / C + + IDE + C / C + +編譯器,GNU Makefile文件,SDL和Qt支持的Android。 C4droid支持ARM處理器(而不是設備與英特爾的x86和MIPS處理器)的設備。\x0d\x0a您\x0d\x0a可以創建自己的應用程序在Android手機中,運行(即使沒有上網:編譯器為離線狀態)和出口的可執行文件(為終端的應用程序)或APK(GUI使用的\x0d\x0a應用程序)。此應用程序使用TCC和uClibc(GCC仿生libc的一個插件),所以它有完整的ANSI C和ISO C99支持。 \x0d\x0aC4droid可用於教育目的或在C和C + +語言的練習。\x0d\x0aC4droid支持語法高亮,代碼完成和源代碼格式,所以它是一個非常方便的工具,在旅途中進行編程。
c語言編寫的程序可以直接在安卓上運行嗎?是不是基本上安卓上所有的都要通過jvm解釋才能運行?
當然可以,只需要安卓手機上安裝C語言的編譯器就可以了。如在手機上使用易歷知食軟體里的微C程序設計,就可以直接在安卓手機上寫C語言程序並運行,下面是其自帶的一個示例(熟悉的九九乘法表),手機上的代碼如下圖所示:
手機上運行結果如下圖所示:
在手機上學習C語言編程就是這麼簡單!
在android上用C語言
安卓也可以用C語言編寫,這種方式程序效率高,但需要一些底層知識。。。(即所謂NDK),Android在支持NDK後是可以實現用C和C++來編寫的。因為用C++比較多,之前用cocos2d-x寫過Demo遊戲。就使用了NDK編譯出.so文件然後放入Android工程用在Java層調用。Android SDK的Java層是可以通過JNI和C/C++進行數據交互的。
詳見:
Android NDK | Android Developers
The NDK is a toolset that allows you to implement parts of your app using native-code languages such as C and C++. For certain types of apps, this can be helpful so you can reuse existing code libraries written in these languages, but most apps do not need the Android NDK.
如何在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!能夠正確的執行了!
原創文章,作者:BLXF,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/148214.html