Не могу собрать модифицированный Android-предохранитель с ndk-build - PullRequest
1 голос
/ 11 марта 2012

При компиляции с помощью ndk-build я получаю следующую ошибку:

/* 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

Я изменил измененный файл 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
}

1 Ответ

4 голосов
/ 03 мая 2012

Проблема в том, что ndk-build пытается построить fusexmp как исполняемый файл, но кажется, что fusexmp не имеет определенной функции main (как того требует компилятор для создания исполняемого файла).Создайте основную функцию в качестве точки входа исполняемого файла или измените fusexmp в библиотеку, изменив include $(BUILD_EXECUTABLE) на include $(BUILD_SHARED_LIBRARY) в вашем Android.mk

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...