LinuxNDK开发和编译

Linux x86 环境下编译工具
sudo apt-get install build-essential
gcc –v
g++ -v
make -v
Gcc编译helloworld例子
#include <stdio.h> /*加载标准输入输出函数原型*/
int main(int argc,char * argv[]) /* 主函数,形参暂时不做解释,照着写就可以了 */
{ //{代表函数开始
    puts("Hello World!"); //puts函数打印一个字符串,字符串为"Hello World!",记住所有的语句都是以;结束。
    return 0;  //返回给操作系统0
}//}代表函数结束
//编译
gcc helloworld.c
gcc helloworld.c –o hello
//执行
./hello

给gcc的例子加上Makefile
执行make编译生成可执行文件hello3

~/workspace/gcc_hello$ cat Makefile

hello3:helloworld.o
	gcc helloworld.o -o hello3
helloworld.o:helloworld.c
	gcc -c -o helloworld.o helloworld.c
G++ helloworld例子

g++ -o hello hello.cpp

#include<iostream>
using namespace std;
int main(int argc,char **argv)
{
    cout<<"Hello world!"<<endl;
    return 0;
}

给g++的例子加上Makefile

~/workspace/g++_hello$ cat Makefile

CC=g++
CCFLAGS = -g -Wall
OBJS = hello.o
SRCS = hello.cpp

all : hello3

hello3 : $(OBJS)
	$(CC) $^ -o $@
%.o : %.cpp
	$(CC) -c $< $(CCFLAGS)
clean:
	rm *.o
$@ 代表目标; $^ 代表所有的依赖对象; $< 代表第一个依赖对象

执行make编译
NDK编译例子

NDK添加环境变量

export NDK_HOME=/home/aa/Android/Sdk/ndk/25.2.9519653
export PATH=$PATH:$NDK_HOME

HelloWorld.c

#include <string.h>  
#include <jni.h>    
jstring  Java_com_lisn_helloworld_HelloWorldActivity_helloWorldFromJNI( JNIEnv* env,
                                                    jobject thiz )  
{
    return (*env)->NewStringUTF(env, "HelloWorld! I am from JNI !");  
}

Android.mk

LOCAL_PATH:= $(call my-dir)  
include $(CLEAR_VARS)  
LOCAL_CFLAGS += -pie -fPIE
LOCAL_LDFLAGS += -pie -fPIE
LOCAL_SRC_FILES:=hello.c  
#生成库的名字
LOCAL_MODULE := helloworld  
LOCAL_MODULE_TAGS := optional  
#生成可执行文件
#include $(BUILD_EXECUTABLE)
#生成动态库
include $(BUILD_SHARED_LIBRARY)

编译命令

Demo/JNI/hello-bin$ ndk-build NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=./Android.mk

使用这个库

package com.lisn.helloworld;  
public class HelloWorldActivity extends Activity {  
   
    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);}  
  
    public native String helloWorldFromJNI();
  
    static {  
        System.loadLibrary("HelloWorld");
    }  
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值