[jni] 08_Sourcery G++ Lite-将c编译成android可运行二进制程序(纯c语言开发程序步骤)

Android 4.0

Sourcery G++ Lite-将c编译成android可运行二进制程序(纯c语言开发程序步骤)

 纯c语言开发程序
Sourcery G++ Lite Edition for ARM
在普通android 开发里面用的不多.
 
1.下载编译器和链接器软件.Sourcery G++ Lite Edition for ARM.
    arm-none-linux-gnueabi-gcc.exe 是编译命令
    bin/arm-none-linux-gnueabi-ld.exe 是链接命令

2.编写c源文件
    #include <stdio.h>
    int main()
    {
        printf("Hello, Android!\n");
        return 0;
    }

3.编译hello.c源文件
    进入cmd
    执行 arm-none-linux-gnueabi-gcc HelloWorld.c -static -o hellostatic

4.将hellostatic文件传输手机
    adb push hellostatic /data/c/

5.改变文件的授权
    adb shell chmod 777 /data/c/hellostatic

6.运行程序
    adb shell
    cd /data/c
    ./hellostatic

7.查看执行结果
 
使用android运行:
package cn.zengfansheng.test;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
import android.app.Activity;
import android.os.Bundle;
public class MainActivity extends Activity {
    @SuppressWarnings("deprecation")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        try {
            //Process process = Runtime.getRuntime().exec("/data/data/hello");// 不是运行在dalvik,而是在linux
            // Process process = Runtime.getRuntime().exec("ps");// 显示进程信息
            Process process = Runtime.getRuntime().exec("date");// 显示日期信息
            InputStream in = process.getInputStream();
            DataInputStream dis = new DataInputStream(in);
            String line = null;
            while ((line = dis.readLine()) != null) {
                System.out.println(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
结果: