gcc笔记
chap1 GNU gcc概述
1、-pedantic选项
gcc -pedantic illcode -o illcode
2、-Wall选项
gcc -Wall illcode -o illcode
3、-Werror选项
它要求gcc将所有的警告当成错误进行处理,这在使用自动编译工具时非常有用。
4、-Wcast-align选项
$gcc test.c -o test
-o参数用于指明要创建的可执行程序名为test。
$./test
$gcc -c test.c
选项-c表示编译器只编译不链接。
$gcc -o test test.o
链接目标文件生成二进制代码文件test。
王秀萍:浅析Android NDK编程中参数的传递
【摘要】本文对在JNI编程中如何传递参数作了一些分析。
2、java类的编写及头文件的生成
(1)在Java中定义一个TwoLibs类
//libXXX.so、XXX.dll
int x=1000;
int y=42;
System.loadLibrary("twolib-second");
int z=add(x, y);
txtResult.setText("The sum of " + x + " and " + y + " is " + z);
public native int add(int x, int y);
(2)通过Javah命令生成JNI头文件
3、参数的传递
(1)基本数据类型的传递
boolean、byte、char、int、float
对应
jboolean、jbyte、jchar、jint、jfloat
jint
Java_com_example_twolibs_TwoLibs_add( JNIEnv* env,
jobject this,
jint x,
jint y )
{
return first(x, y);
}
(2)String参数的传递
(3)普通数组类型的传递
(4)字符串数组的传递
4、结语
在Android中通过JNI调用C语言的动态库,参数传递是一大难点。
董伟巍:JNI技术在网络交互中的应用
3.5编译生成相应的库
Android.mk文件中各个内容及其作用。
1、LOCAL_PATH:= $(call my-dir)
LOCAL_PATH变量
宏函数my-dir由编译系统提供,用于返回当前路径,即包含Android.mk文件的目录。
include $(CLEAR_VARS)
CLEAR_VARS由编译系统提供,指定让GNU MAKEFILE清除许多除LOCAL_PATH外的LOCAL_XXX变量。
LOCAL_MODULE := libtwolib-first
LOCAL_SRC_FILES := first.c
include $(BUILD_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libtwolib-second
编译的目标对象,LOCAL_MODULE变量必须定义,以标识你在Android.mk文件中描述的每个模块。名称必须是唯一的,而且不包含任何空格。
LOCAL_SRC_FILES := second.c
编译所包含的所有cpp文件。
LOCAL_LDLIBS := -llog
用来打印在c代码里实现log打印。
LOCAL_STATIC_LIBRARIES := libtwolib-first
include $(BUILD_SHARED_LIBRARY)
BUILD_SHARED_LIBRARY表示编译生成共享库,是编译系统提供的变量,指向一个GNU Makefile脚本。
浙公网安备 33010602011771号