Domanda

Durante la compilazione con NDK-Build, ottengo il seguente errore:

/* this is the output*/
alex@ubuntu:~/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
.

Ho modificato FUSEXMP.C modificato come segue:

#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
}
.

È stato utile?

Soluzione

Il problema è che ndk-build sta tentando di costruire fusexmp come eseguibile, ma sembra che fusexmp non abbia una funzione main definita (come richiesto dal compilatore per creare un eseguibile).Creare una funzione principale come punto di ingresso del programma eseguibile o modifica fusexmp in una libreria, modificando include $(BUILD_EXECUTABLE) in include $(BUILD_SHARED_LIBRARY) in Android.mk

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top