No se puede construir modificada de android-fusible con ndk-build
-
11-12-2019 - |
Pregunta
Al compilar con ndk-build, me sale el siguiente error:
/* 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
He modificado modificado fusexmp.c como sigue:
#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
}
Solución
El problema es que ndk-build
está tratando de construir fusexmp
como un ejecutable, pero parece que fusexmp
no tiene un main
la función define (como es requerido por el compilador para crear un archivo ejecutable).Crear una función principal como el punto de entrada del ejecutable, o cambiar fusexmp
en una biblioteca, por el cambio de include $(BUILD_EXECUTABLE)
a include $(BUILD_SHARED_LIBRARY)
en su Android.mk
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow