導航:首頁 > 程序命令 > android使用linux命令

android使用linux命令

發布時間:2022-05-07 16:12:44

㈠ 安卓用eclipse編程如何調用linux命令

使用eclipse進行嵌入式Linux的開發環境配置:
1、安裝jdk
jdk(java development kit)即java開發包,其中包含了運行eclipse所需要的jre. ubuntu預設安裝的gnu版本的jre運行效率不高,所以需要安裝sun公司的jre. 首先從sun的網站上下載安裝包jdk-6u7-linux-i586.bin,然後如下進行安裝:
# mkdir -p /opt/java
# ./jdk-6u7-linux-i586.bin // 執行自解壓文件,生成目錄
# mv jdk1.6.0_07 /opt/java // 把目錄移到/opt/java下
# cd /opt/java
# ln -s jdk1.6.0_07 jdk
# mv /etc/alternatives/java /etc/alternatives/java.gnu
# ln -s /opt/java/jdk/bin/java /etc/alternatives/java
# export JAVA_HOME=/opt/java/jdk // 設置環境變數
2、安裝eclipse和cdt
從eclipse網站上下載安裝包eclipse-SDK-3.4-linux-gtk.tar.gz 和cdt-master-5.0.0.zip
# cd /opt
# tar zxvf eclipse-SDK-3.4-linux-gtk.tar.gz // 解壓生成eclipse目錄
# export PATH=/opt/eclipse:$PATH
# mkdir -p /opt/cdt
# cd /opt/cdt
# unzip cdt-master-5.0.0.zip
# cp -r plugins/* /opt/eclipse/plugins/
# cp -r features/* /opt/eclipse/features/
二、創建c/c++工程
假設已經在linux上安裝好了arm交叉工具鏈,下面介紹如何創建、交叉編譯和調試c/c++工程,進入eclipse安裝路徑後,運行eclipse。
創建c 工程

使用預設的Linux GCC工具鏈


進入c/c++ 界面添加源代碼文件1


添加源代碼文件2

編輯代碼

設置工程屬性,指定交叉工具鏈1

設置工程屬性,指定交叉工具鏈2

設置工程屬性,指定交叉工具鏈3

編譯工程

已生成arm平台可執行代碼

配置調試選項

設置Debugger和 GDB debugger選項

設置連接類型為TCP,目標板的ip地址和調試埠號。埠號任意指定,通常大於1024(避免和系統所用埠號沖突)

在開發板上運行程序,格式如上圖所示:gdbserver是交叉調試輔助程序;192.168.0.150是主機的ip地址;1234是調試埠號,和eclipse調試選項里設定的埠號要一致

點擊Debug,進入調試界面

執行到斷點
eclipse的調試界面和操作和在windows下開發類似。
所需開發工具及環境
虛擬機Linux:Fedora 9
交叉編譯工具:arm-linux-gcc-3.4.1.tar.bz2
集成開發工具:Eclipse(Linux安裝包中自帶的,安裝Linux時選中安裝)
安裝ARM交叉編譯器
1. 安裝。其實很簡單,就是將下載的arm-linux-gcc-3.4.1.tar.bz2解壓到Linux根目錄即可(因為解壓後已經包含了/usr/local目錄,所以要解壓到根目錄),如下命令:

tar -jxvf arm-linux-gcc-3.4.1.tar.bz2 -C /

解壓後的目錄/usr/local/arm/3.4.1/
2. 設置環境變數。就是把交叉編譯器的路徑設置到系統環境變數裡面去。

echo $PATH

查看現有的環境變數

如果只想臨時添加交叉編譯器的環境變數(註:臨時添加的系統重啟或注銷後又沒有了),只需在命令行輸入如下命令:

export PATH=$PATH:/usr/local/arm/3.4.1/bin

如果想這個環境變數永久的添加到系統的環境變數中,則你只需把這個命令添加到/root/.bashrc文件的最後一行即可(這個文件是隱藏文件,你要在文件瀏覽器中單擊查看菜單,勾選顯示隱藏文件才能看到)
3. 測試建立的交叉編譯環境。新建一個c程序,文件名:test.c, 如下:

#include <stdio.h>
int main(void)
{
printf("Hellow world!\n");
return 0;
}

進行交叉編譯,如下:

arm-linux-gcc -o test test.c

將交叉編譯好的目標文件test下載到ARM開發板中並運行,如下:

./test
輸出結果為:
Hellow world!
用集成開發工具Eclipse來開發嵌入式應用程序

雙擊Eclipse圖標啟動Eclipse

設置Eclipse的工作空間,就是選個目錄,單擊OK

啟動後的主界面

開始新建一個應用程序工程

選擇新建一個C工程,單擊Next

給工程取個名字,這里我就叫test_app;然後選擇工程類型,我選擇了個Hellow world C工程模版,單擊Next

填寫作者、版權等信息,單擊Next

沒什麼選的,點擊Finish

單擊Yes

新建好的項目工程

展開左邊的源代碼目錄,雙擊打開主函數。這里只是輸出一句"Hello World!!!",你可以做一些其他復雜的應用

單擊Project菜單,去掉Build Automatically的勾選,因為勾選的話,每次修改一個地方工程都會自動進行編譯

打開工程的屬性對話框進行編譯選項的設置

我們的應用程序最終要到嵌入式arm上運行,這里就要把gcc改成arm-linux-gcc編譯器,當然前提是你要在你的開發主機上先安裝arm-linux-gcc

C連接器也要改成arm-linux-gcc

這里的Libraries是設置你的應用程序中用到的庫文件,比如應用程序中用到了線程類,則這里在上面添加pthread這個庫,下面就添加這個庫的路徑。如果應用程序沒用到任何庫文件就不用管了

選中左側的工程名,右鍵,在彈出的菜單中選擇Build Project編譯工程

編譯好後的工程,目標文件在Debug目錄下

㈡ 怎麼調用system函數,使用android的linux命令

先來看一下system()函數的簡單介紹:

int system(const char *command);

system() executes a command specified in command by calling /bin/sh -c command, and returns after the command has been completed. During execution of the command, SIGCHLD will be blocked, and SIGINT and SIGQUIT will be ignored.

system()函數調用/bin/sh來執行參數指定的命令,/bin/sh 一般是一個軟連接,指向某個具體的shell,比如bash,-c選項是告訴shell從字元串command中讀取命令;

在該command執行期間,SIGCHLD是被阻塞的,好比在說:hi,內核,這會不要給我送SIGCHLD信號,等我忙完再說;

在該command執行期間,SIGINT和SIGQUIT是被忽略的,意思是進程收到這兩個信號後沒有任何動作。

再來看一下system()函數返回值:

The value returned is -1 on error (e.g. fork(2) failed), and the return status of the command otherwise. This latter return status is in the format specified in wait(2). Thus, the exit code of the command will be WEXITSTATUS(status). In case /bin/sh could not be executed, the exit status will be that of a command that does exit(127).

If the value of command is NULL, system() returns nonzero if the shell is available, and zero if not.

為了更好的理解system()函數返回值,需要了解其執行過程,實際上system()函數執行了三步操作:

1.fork一個子進程;

2.在子進程中調用exec函數去執行command;

3.在父進程中調用wait去等待子進程結束。

對於fork失敗,system()函數返回-1。

如果exec執行成功,也即command順利執行完畢,則返回command通過exit或return返回的值。

(注意,command順利執行不代表執行成功,比如command:」rm debuglog.txt」,不管文件存不存在該command都順利執行了)

如果exec執行失敗,也即command沒有順利執行,比如被信號中斷,或者command命令根本不存在,system()函數返回127.

如果command為NULL,則system()函數返回非0值,一般為1.

popen和system都可以執行外部命令。

popen相當於是先創建一個管道,fork,關閉管道的一端,執行exec,返回一個標準的io文件指針。

system相當於是先後調用了fork, exec,waitpid來執行外部命令

popen本身是不阻塞的,要通過標准io的讀取使它阻塞

system本身就是阻塞的。

㈢ 如何在安卓手機或平板設備上運行Linux系統

首先,關於linux,我們需要知道兩個知識點,一個在linux系統下,我們可以將一個文件掛載為一個分區,也就是說如果我有一個磁碟鏡像文件,我可以直接掛載為一個linux的分區;這一點與windows的虛擬光碟機有點類似,但是在linux下,不僅是光碟鏡像文件,所有的鏡像文件都可以掛載為一個linux的分區;第二個知識點就是chroot,可能看到這個你就明白了本文講的方法是如何從安卓設備運行linux系統的,如果還不明白的話,請繼續往下看。chroot 就是Change Root,也就是改變程序執行時所參考的根目錄位置。有了這兩個知識就簡單了。
方法:首先啟動安卓系統,然後將linux的系統鏡像文件掛載為安卓系統的一個分區(所以設備必須支持Loop設備),然後通過chroot命令切換程序執行時所參考的根目錄即可。這樣我們就可以使用系統鏡像文件里的操作系統了。
需要用到的幾個軟體:BusyBox Pro,Complete Linux Installer(內含終端模擬器 VNC安卓客戶端和Linux鏡像下載鏈接),適合於Arm的Ubuntu鏡像。這幾個軟體都可以從Google Play里下載到,其中BusyBox Pro是收費應用,網上應該也有免費的下載,可以搜一下。另外Complete Linux Installer也帶有BusyBox如果不想下載那個收費的,用這里帶的或許也可以,但是可能會報告一個錯誤。
軟體安卓好之後,將Ubuntu鏡像放到SD卡里,最好是Class 10的高速卡,不然可能會稍微卡一點,但是不會非常卡,因為大多數的操作還是依賴於安卓系統構建的系統的了,這跟直接將系統鏡像寫入SD卡並從SD卡啟動不同。這個鏡像文件需要放到SD卡的一個文件夾下,注意一定不能使中文。然後打開Complete LinuxInstaller,裡面有一個啟動操作系統,右上角會有一個菜單編輯,名稱任意,路徑當然就要選擇我們的鏡像所致的路徑了,保存並返回。此時點擊啟動即可啟動linux系統。此時會啟動終端模擬器,提示幾個問題,如果是第一次啟動會讓設置密碼,設置好密碼之後,再依次輸入y,最好設置解析度,y,即可。如果啟動失敗,可以多試幾次即可。
之後可以打開VNC客戶端,連接127.0.0.1:5900輸入剛才設置的用戶名密碼即可連接登陸。如果顯示被拒絕連接,可以檢查一下埠號是否正確。檢查的方法是到終端模擬器執行 netstat -tlnp 看一下vncserver前面對應的埠號碼是多少,再到VNC客戶端改為相應的埠號即可。

㈣ 在Android 代碼中能執行Linux命令嗎

可以,ANDROID本身就是以LINUX為基礎的,下載一個SSH客戶端(如ConnectBot),連接到本機就可以用LINUX命令操作手機了。

㈤ 如何在APK程序里執行linux命令

Android的底層是Linux內核,因此在shell環境下可以運行Linux命令,尤其是經過root處理的android系統,基本上可以通過調用Linux命令完全控制手機,下面的RootCmd.java代碼可以實現運行Linux外部命令。

packagemy.android.code;
importandroid.os.Environment;
importdalvik.annotation.Signature;
importjava.io.BufferedReader;
importjava.io.DataInputStream;
importjava.io.DataOutputStream;
importjava.io.File;
importjava.io.FileReader;
importjava.io.InputStream;
importjava.io.OutputStream;
importjava.util.Vector;
publicfinalclassRootCmd
{
//執行linux命令並且輸出結果
(StringparamString)
{
VectorlocalVector=newVector();
try
{
ProcesslocalProcess=Runtime.getRuntime().exec("su");//經過Root處理的android系統即有su命令
OutputStreamlocalOutputStream=localProcess.getOutputStream();
=newDataOutputStream(localOutputStream);
InputStreamlocalInputStream=localProcess.getInputStream();
=newDataInputStream(localInputStream);
Stringstr1=String.valueOf(paramString);
Stringstr2=str1+" ";
localDataOutputStream.writeBytes(str2);
localDataOutputStream.flush();
Stringstr3=localDataInputStream.readLine();
localVector.add(str3);
localDataOutputStream.writeBytes("exit ");
localDataOutputStream.flush();
localProcess.waitFor();
returnlocalVector;
}
catch(ExceptionlocalException)
{
localException.printStackTrace();
}
}
//執行linux命令但不關注結果輸出
(StringparamString)
{
try
{
ProcesslocalProcess=Runtime.getRuntime().exec("su");
ObjectlocalObject=localProcess.getOutputStream();
=newDataOutputStream((OutputStream)localObject);
Stringstr=String.valueOf(paramString);
localObject=str+" ";
localDataOutputStream.writeBytes((String)localObject);
localDataOutputStream.flush();
localDataOutputStream.writeBytes("exit ");
localDataOutputStream.flush();
localProcess.waitFor();
localObject=localProcess.exitValue();
returnlocalObject;
}
catch(ExceptionlocalException)
{
localException.printStackTrace();
}
}
//判斷機器Android是否已經root,即是否獲取root許可權
()
{
inti=execRootCmdSilent("echotest");//通過執行測試命令來檢測
if(i!=-1)returntrue;
retrunfalse;
}
}

㈥ android如何使用linux系統的一些庫

1、放到安卓系統中,每個應用都可以訪問
將編譯好的libmono2.so放到系統的/system/lib目錄下。打開Eclipse上ADT插件裡面的File Explorer工具,點擊/system/lib目錄,選擇右上角有個push a file onto devices,打開對話框後,再選擇libmono2.so文件,確定後即可將lib文件放到手機中了。(如果不行也可以使用ADB自帶adb push命令)。再設置其許可權為744,命令如下:

#用命令行方式訪問手機設備
adb shell
#進入/system/lib目錄
cd /system/lib
#設置libmono2.so許可權為744
chmod 744 libmono2.so
此時利用Jni機制編寫裝載Jni庫方法的類,類裡面需要嚴格按照Jni機制進行編寫Jni介面

2、放到應用軟體中,只有自己的應用可以訪問

①在軟體工程下新建libs/armeabi文件夾,並將libmono2.so庫拷貝進去。
②接下來做的就是重寫Jni介面,和方法1的最後過程是一樣的。

㈦ Android Linux下有哪些常用命令

建議你買本書對照著學,或者在日常生活中使用linux慢慢學習使用我常用的命令:pwd列印當前工作目錄cd切換目錄ssh用於連接用vi編輯用cat列印|管道符sudo提升許可權chmod更改許可權apt-get、yum、pacman軟體包管理器rpm、dpkg、tar-zxvf等用於安裝或編譯軟體su切換用戶shutdown-hnow關機其實有很多,關鍵在日常使用中邊用邊學祝你早日熟悉linux命令!

㈧ android中執行linux命令 的疑問,該怎麼處理

應該是許可權的問題,當然可以在Mainfest里把相關網路操作的許可權加上試試,如果不行用JNI做,再不行就說明ifconfig需要root許可權了

㈨ 安卓超級終端可以執行全部linux命令嗎

因為它還有很多庫是沒有的,所以除了單個命令沒在裡面外,就算你把所需要命令拷進去也不一定都能運行。所以在安卓超級終端里,大部分的linux命令是沒法用的,它畢竟不是一台電腦。

㈩ 安卓不是Linux系統么請問如何在手機中執行linux命令,如ls、vi之類的謝謝!

安卓可不是LINUX,是谷歌支持發展起來的獨立操作系統。
雖然採用了Linux內核,但沒有本地窗口,也不支持那些Linux的基礎應用。

閱讀全文

與android使用linux命令相關的資料

熱點內容
php讀取word亂碼 瀏覽:753
minicom源碼 瀏覽:1000
海爾冷櫃壓縮機 瀏覽:415
聯通伺服器如何調試信號 瀏覽:135
stata新命令 瀏覽:940
單調棧演算法python 瀏覽:605
微信解壓游戲怎麼下載 瀏覽:961
忍三伺服器不同如何登上賬號 瀏覽:821
php求積 瀏覽:294
封面命令 瀏覽:879
手機復制文件夾到另一個文件夾 瀏覽:992
手游為什麼不能統一下伺服器 瀏覽:246
iphone上pdf 瀏覽:884
window定時python腳本 瀏覽:64
怎麼運行cmd命令行 瀏覽:366
php中類的繼承 瀏覽:228
openvpnlinux安裝配置 瀏覽:463
PHP7從入門到精通 瀏覽:27
單片機生日 瀏覽:500
linux當前進程號 瀏覽:728