2012-03-11 30 views
1

雖然與NDK建造編譯,我得到以下錯誤:不能建修改Android的保險絲NDK建造

/* this is the output*/ 
[email protected]:~/NDKDemo$ ndk-build 
Compile thumb : fusexmp <= fusexmp.c 
Compile thumb : fuse <= cuse_lowlevel.c 
Compile thumb : fuse <= fuse.c 
Compile thumb : fuse <= fuse_kern_chan.c 
Compile thumb : fuse <= fuse_loop.c 
Compile thumb : fuse <= fuse_loop_mt.c 
Compile thumb : fuse <= fuse_lowlevel.c 
Compile thumb : fuse <= fuse_mt.c 
Compile thumb : fuse <= fuse_opt.c 
Compile thumb : fuse <= fuse_session.c 
Compile thumb : fuse <= fuse_signals.c 
Compile thumb : fuse <= helper.c 
Compile thumb : fuse <= mount.c 
Compile thumb : fuse <= mount_util.c 
jni/mount_util.c: In function 'add_mount_legacy': 
jni/mount_util.c:91: warning: assignment makes pointer from integer without a cast 
Compile thumb : fuse <= ulockmgr.c 
StaticLibrary : libfuse.a 
Executable  : fusexmp 
/home/alex/Downloads/android-ndk-r7/platforms/android-14/arch-arm/usr/lib/crtbegin_dynamic.o: In function `_start': 
(.text+0x14): undefined reference to `main' 
collect2: ld returned 1 exit status 
make: *** [obj/local/armeabi/fusexmp] Error 1 

我已經修改修改fusexmp.c如下:

#include "com_alex_NativeLib.h" 
............................ //fuse specific code which build succesfully 
............................. 
/* Callable native function signature from Java*/ 
JNIEXPORT jint JNICALL Java_com_marakana_NativeLib_hello_fuse 
    (JNIEnv * env, jobject obj) { 
char *v[2]; 
    v[0]=(char*)malloc(90); //argv[0] for fuse_main 
    v[1]=(char*)malloc(90); //argv[1] for fuse_main 
    strcpy(v[0],"hello"); 
    strcpy(v[1],"./helloxmp"); //path to mount point 

    umask(0); 
    return fuse_main(2, v, &xmp_oper, NULL); //the fuse main call 
} 
+0

@Samveen我當我運行fusexmp做u.but類似的工作,我可以掛載改變include $(BUILD_EXECUTABLE)include $(BUILD_SHARED_LIBRARY)一個目錄,但無法在目錄中創建一個文件,並提示錯誤,它是一個只讀文件系統。是否遇到同樣的錯誤或有任何解決方案?thx – 2012-05-31 03:13:46

回答

3

問題是ndk-build正試圖將fusexmp作爲可執行文件來構建,但似乎fusexmp沒有定義函數(正如編譯器創建可執行文件所要求的那樣)。創建一個主要功能的可執行文件的入口點,或更改fusexmp到庫中,通過在Android.mk