易截截图软件、单文件、免安装、纯绿色、仅160KB

在android 上面 运行纯C helloworld

由于要测系统的CPU属性,需要独立编译应用程序,便试了下编译纯C 程序,测试通过。
CC         := $(NDK_BASE)/toolchain/arm-eabi/bin/arm-eabi-gcc
AR         := $(NDK_BASE)/toolchain/arm-eabi/bin/arm-eabi-ar
INC        := -I$(NDK_BASE)/include/bionic/arch-arm/include \
 -I$(NDK_BASE)/include/bionic/include \
 -I$(NDK_BASE)/include/kernel/include \
 -I$(NDK_BASE)/include/libm/include \
 -I$(NDK_BASE)/include/libm/include/arm \
 -I$(NDK_BASE)/include/libstdc++/include
LINK       := -nostdlib -Bdynamic \
     -Wl,-T,$(NDK_BASE)/config/armelf.x \
     -Wl,-dynamic-linker,/system/bin/linker \
     -Wl,-z,nocopyreloc \
     -L$(NDK_BASE)/lib \
     -Wl,-rpath-link=$(NDK_BASE)/lib \
    $(NDK_BASE)/lib/crtbegin_dynamic.o
POSTLINK := $(NDK_BASE)/lib/crtend_android.o
%.o: %.cpp
 $(CC) $(CFLAGS) -fno-exceptions -fno-rtti $(INC) -o $@ -c $<
 
%.o: %.c
 $(CC) $(CFLAGS) $(INC) -o $@ -c $<
 include ./config.mk
EXECUTABLE := TEST
SOURCES    := main.c
OBJECTS    := $(SOURCES:.c=.o)
LIBS       := -lc -lm
all: $(EXECUTABLE)
# need $(LINK) before all objects and $(POSTLINK) after all objects for
# android runtime setup.
TEST: $(OBJECTS)
 $(CC) $(LINK) -o $@ $(OBJECTS) $(LIBS) $(POSTLINK)
clean:
 rm -rf *.o
 rm EXECUTABLE
测试程序 就是 printf("Hello world")
另外注意下,一般上传到手机data目录,并chmod下


相关文档:

C Traps and Pitfalls 读书摘记

用单引号引起的一个字符实际上代表一个整数,整数值对应于改字符在编译器采用的字符集中的序列值。
用双引号引起的字符串,代表的是一个指向无名数组起始字符的指针,该数组被双引号之间的字符以及一个额外的二进制值为零的字符'\0'初始化。
printf("Hello world\n");

char hello[] = {'H', 'e', 'l', 'l', 'o', ' ' ......

递归 回溯法求解8皇后问题(C)

无意中翻出了N年前写的递归-回溯法求解8皇后问题,干粹塞到博客中吧。
#include <stdio.h>
#include <conio.h>
#include <math.h>
#define QUEENS 8
// 记录解的序号的全局变量。
int iCount = 0;
// 记录皇后在各列上的放置位置的全局数组。
int Site[QUEENS];
// 递归求解的函数。
void Q ......

"extern C", 你真的懂了吗?

       在c++ prime书中看到过,在DLL和lib中看到过,但是每次看过就不求甚解地一扫而过。心里知道有extern c这个语句,却不知道该用在哪里,又能起到什么作用。唉,想想自己也算是写过不少CODE的人了,可这种眼高手低的毛病却从没改变过。今天突然想起extern这个关键字,遂决定不能再这么浪 ......

c/C++编译的程序占用的内存情况 文字常量区

首先看下下面这段:
int main()
{
char *name = "fengkewei";
char name1[] = "fengkewei";
char *name2 = "fengkewei";
char *name3 = "woaifengkewei";
int i = 10;
int j = 10;
int k = 11;
return 0;
}
若您觉得它们应该都保存在内存中的一块地方,那请往下看。。。。
下面是编译器为各个变量分配的内存地 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号