android - 在android中编译 native 代码。错误 : undefined reference to 'main'

标签 android windows android-ndk java-native-interface native

我要编译delegate在带有 NDK 构建器的 Android 中(在 Windows 中)。

DeleGate是一个多用途代理服务器,用于在多个平台上运行的多个应用程序协议(protocol)。本文档的目的是通过一系列使用示例和针对初学者的简短教程来介绍如何使用 DeleGate。

我是 NDK 的新手,任何线索都会有所帮助。

这是完整的错误:

[armeabi-v7a] Executable     : delegated
D:/dev/sdk/android/ndk-bundle-r15b/build//../platforms/android-16/arch-arm/usr/lib/../lib\crtbegin_dynamic.o:crtbegin_dynamic.c:function _start: error: undefined reference to 'main'
clang++.exe: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [D:/dev_app/android-ndk-master/test-jni2/obj/local/armeabi-v7a/delegated] Error 1

这是Application.mk的内容

APP_ABI := armeabi-v7a x86 arm64-v8a
APP_PLATFORM := android-16
APP_OPTIM := release

这是Android.mk的内容

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := delegated

LOCAL_C_INCLUDES := \
    $(LOCAL_PATH) \
    $(LOCAL_PATH)/filters \
    $(LOCAL_PATH)/fsx \
    $(LOCAL_PATH)/gates \
    $(LOCAL_PATH)/include \
    $(LOCAL_PATH)/include-ce \
    $(LOCAL_PATH)/maker \
    $(LOCAL_PATH)/mimekit \
    $(LOCAL_PATH)/pds/md5 \
    $(LOCAL_PATH)/pds/regex \
    $(LOCAL_PATH)/rary \
    $(LOCAL_PATH)/resolvy \
    $(LOCAL_PATH)/subin \
    $(LOCAL_PATH)/teleport \
    $(LOCAL_PATH)/src \

LOCAL_SRC_FILES := \
#   filters/backup.c \
    filters/bdtee.c \
    filters/bdthru.c \
    filters/cafe.c \
    filters/cafemain.c \
    filters/cfi.c \
    filters/ciicgi.c \
    filters/dglogs.c \
    filters/dl.c \
    filters/dping.c \
    filters/expired.c \
    filters/fcl.c \
    filters/gzip.c \
    filters/htview.c \
    filters/htwrap.c \
    filters/m17nccx.c \
    filters/mkstab.c \
    filters/netzip.c \
    filters/pdft.c \
    filters/reclog.c \
    filters/regex.c \
    filters/sslway.c \
    filters/swft.c \
    fsx/any2fdif.c \
    gates/b2x.c \
    gates/Gates_Win32.c \
    maker/alloca.c \
    maker/avail.c \
    maker/bcopy.c \
    maker/bzero.c \
    maker/chown.c \
    maker/chroot.c \
    maker/closesocket.c \
    maker/dlopen.c \
    maker/dummy.c \
    maker/endhostent.c \
    maker/errno.c \
    maker/ERR_error_string_n.c \
    maker/fchmod.c \
    maker/fchown.c \
    maker/fcloseFILE.c \
    maker/fgetpos.c \
    maker/flockfile.c \
    maker/FMODE.c \
    maker/fork.c \
    maker/forkpty.c \
    maker/forkpty1.c \
    maker/fpurge.c \
    maker/fseeko.c \
    maker/fsync.c \
    maker/futimes.c \
    maker/futimes_.c \
    maker/Gates_Win32.c \
    maker/getcwd.c \
    maker/gethostbyname2.c \
    maker/gethostid.c \
    maker/getmsg.c \
    maker/getrlimit.c \
    maker/getrusage.c \
    maker/getwd.c \
    maker/getwinsize.c \
    maker/gxx.c \
    maker/inet_aton.c \
    maker/killpg.c \
    maker/link.c \
    maker/lstat.c \
    maker/malloc_size.c \
    maker/mkfifo.c \
    maker/mkmake.c \
    maker/mutex.c \
    maker/netsh_none.c \
    maker/nice.c \
    maker/nothread.c \
    maker/old_alloca.c \
    maker/opt_s_caps.c \
    maker/opt_s_htaccept.c \
    maker/opt_s_pilsner.c \
    maker/opt_s_sox.c \
    maker/opt_s_spinach.c \
    maker/opt_s_stls.c \
    maker/opt_s_vsap.c \
    maker/p2i.c \
    maker/p2ll.c \
    maker/pam_start.c \
    maker/pendingcc.c \
    maker/pendingcc1.c \
    maker/pthread_kill.c \
    maker/ptrace.c \
    maker/putenv.c \
    maker/readlink.c \
    maker/regex.c \
    maker/RSA_generate_key.c \
    maker/sendFd1.c \
    maker/sendFd2.c \
    maker/sendFd3.c \
    maker/setbuffer.c \
    maker/setegid.c \
    maker/seteuid.c \
    maker/setferror.c \
    maker/setlinebuf.c \
    maker/setlogin.c \
    maker/setproctitle.c \
    maker/setresuid.c \
    maker/setsid.c \
    maker/sgTTy.c \
    maker/sigaction.c \
    maker/sigmask.c \
    maker/sigsetmask.c \
    maker/snprintf.c \
    maker/socketpair.c \
    maker/socklen_s.c \
    maker/socklen_u.c \
    maker/spawnvp.c \
    maker/spawnvp_.c \
    maker/SSL_CTX_set_tmp_rsa_callback.c \
    maker/SSL_library_init.c \
    maker/SSL_set_SSL_CTX.c \
    maker/statvfs.c \
    maker/stdio.c \
    maker/strcasecmp.c \
    maker/strcasestr.c \
    maker/strdup.c \
    maker/strerror.c \
    maker/strncpy.c \
    maker/strrcasestr.c \
    maker/strstr.c \
    maker/Stty.c \
    maker/symlink.c \
    maker/sysctl.c \
    maker/sysctlbyname.c \
    maker/sysinfo.c \
    maker/syslog.c \
    maker/timegm.c \
    maker/ualarm.c \
    maker/unaligned.c \
    maker/uname.c \
    maker/unsetenv.c \
    maker/unsetenv_.c \
    maker/usleep.c \
    maker/utimes.c \
    maker/vfork.c \
    maker/wait3.c \
    maker/waitpid.c \
    maker/yp_match.c \
    maker/_-fcloseFILE.c \
    maker/_-fcloseFILE2.c \
    maker/_-fcntl.c \
    maker/_-fgetpos.c \
    maker/_-forkpty.c \
    maker/_-fseeko.c \
    maker/_-getrusage.c \
    maker/_-mkfifo.c \
    maker/_-mutex.c \
    maker/_-poll.c \
    maker/_-poll1.c \
    maker/_-poll2.c \
    maker/_-pthread_create.c \
    maker/_-ptrace.c \
    maker/_-recv.c \
    maker/_-regex.c \
    maker/_-select.c \
    maker/_-setferror.c \
    maker/_-sgTTy.c \
    maker/_-statvfs.c \
    maker/_-strcasestr.c \
    maker/_-sysconf.c \
    maker/_-sysconf2.c \
    maker/_-sysinfo.c \
    maker/_-system.c \
    maker/_spawnvp.c \
    maker/__alloca.c \
    maker/__fchmod.c \
    maker/__fchown.c \
    maker/__flock.c \
    maker/__fork.c \
    maker/__forkpty.c \
    maker/__futimes.c \
    maker/__gethostbyname2.c \
    maker/__getrlimit.c \
    maker/__getwinsize.c \
    maker/__link.c \
    maker/__lstat.c \
    maker/__lwp_create.c \
    maker/__malloc_size.c \
    maker/__opendir.c \
    maker/__pthread_create.c \
    maker/__pthread_kill.c \
    maker/__ptrace.c \
    maker/__scandir.c \
    maker/__setproctitle.c \
    maker/__sigaction.c \
    maker/__spawnvp.c \
    maker/__statvfs.c \
    maker/__symlink.c \
    maker/__syscall.c \
    maker/__sysconf.c \
    maker/__sysctl.c \
    maker/__sysinfo.c \
    maker/__syslog.c \
    maker/__system.c \
    maker/__tcsetattr.c \
    maker/__ualarm.c \
    maker/__uname.c \
    maker/__usleep.c \
    maker/__utimes.c \
    maker/___beginthread.c \
    maker/___lwp_create.c \
    maker/___spawnvp.c \
    mimekit/gendom.c \
    mimekit/mime.c \
    mimekit/mimecodes.c \
    mimekit/mimeconv.c \
    mimekit/mimehead.c \
    mimekit/mimeh_ovw.c \
    mimekit/mimemain.c \
    mimekit/noxlib.c \
    mimekit/pgp.c \
    mimekit/rfc822.c \
    mimekit/str_codes.c \
    pds/md5/md5c.c \
    pds/md5/md5cb.c \
    pds/md5/md5lib.c \
    pds/md5/md5main.c \
    pds/md5/mddriver.c \
    pds/regex/engine.c \
    pds/regex/regcomp.c \
    pds/regex/regdummy.c \
    pds/regex/regerror.c \
    pds/regex/regexec.c \
    pds/regex/regfree.c \
    rary/asock.c \
    rary/bsort.c \
    rary/ccx.c \
    rary/ccxmain.c \
    rary/cfilib.c \
    rary/cksum.c \
    rary/codec.c \
    rary/codeconv.c \
    rary/credhy.c \
    rary/dglibs.c \
    rary/file.c \
    rary/Finish.c \
    rary/forkspawn.c \
    rary/fpoll.c \
    rary/fpolls.c \
    rary/frelay.c \
    rary/fstat.c \
    rary/hash.c \
    rary/hostaddr.c \
    rary/html.c \
    rary/IsSolaris.c \
    rary/JIS.c \
    rary/libpam.c \
    rary/lock.c \
    rary/lsock.c \
    rary/modfmt.c \
    rary/nbio.c \
    rary/netsh.c \
    rary/pam.c \
    rary/passwd.c \
    rary/pelcgb.c \
    rary/pilsner.c \
    rary/pstitle.c \
    rary/randstack.c \
    rary/rawcopy.c \
    rary/readycc.c \
    rary/sched.c \
    rary/schedmain.c \
    rary/sed.c \
    rary/setutimes.c \
    rary/signal.c \
    rary/SLL.c \
    rary/socks5.c \
    rary/Strftime.c \
    rary/strid.c \
    rary/String.c \
    rary/str_stdio.c \
    rary/syslog.c \
    rary/tar.c \
    rary/Thread.c \
    rary/Timeofday.c \
    rary/timer.c \
    rary/TLEX.c \
    rary/unix.c \
    rary/urlesc.c \
    rary/uu.c \
    rary/vsaddr.c \
    rary/wince.c \
    rary/windows.c \
    rary/windows0.c \
    rary/winmisc.c \
    rary/winmo.c \
    rary/winnat.c \
    rary/winsspi.c \
    rary/ystring.c \
    resolvy/dnsnode.c \
    resolvy/hostent.c \
    resolvy/ntod.c \
    resolvy/rescache.c \
    resolvy/resconf.c \
    resolvy/reshost.c \
    resolvy/resmain.c \
    resolvy/resolv.c \
    subin/dgbind.c \
    subin/dgchroot.c \
    subin/dgcpnod.c \
    subin/dgdate.c \
    subin/dgforkpty.c \
    subin/dgpam.c \
    subin/dgsetlogin.c \
    subin/dgxauth.c \
    include/mkcpp.c \
#   include/typedefs.c \
    src/abort.c \
    src/access.c \
    src/admin.c \
    src/alias.c \
    src/bcounter.c \
    src/builtin.c \
    src/cache.c \
    src/caps.c \
    src/ccache.c \
    src/cgi.c \
    src/commands.c \
    src/cond.c \
    src/conf.c \
    src/coupler.c \
    src/croncom.c \
    src/cuseeme.c \
    src/db.c \
    src/ddi.c \
    src/delegated.c \
    src/dgauth.c \
    src/dget.c \
    src/dgsign.c \
    src/distrib.c \
    src/domain.c \
    src/dtot.c \
    src/editconf.c \
    src/embed.c \
    src/enews.c \
    src/env.c \
    src/filetype.c \
    src/filter.c \
    src/form2conf.c \
    src/ftp.c \
    src/ftpgw.c \
    src/gacl.c \
    src/gopher.c \
    src/hostlist.c \
    src/htaccept.c \
    src/htccx.c \
    src/htfilter.c \
    src/htmlgen.c \
    src/htswitch.c \
    src/http.c \
    src/httpd.c \
    src/httphead.c \
    src/httplog.c \
    src/httpx.c \
    src/icap.c \
    src/icp.c \
    src/ident.c \
    src/imap.c \
    src/inetd.c \
    src/inets.c \
    src/inets_lib.c \
    src/iotimeout.c \
    src/ipno.c \
    src/ldap.c \
    src/log.c \
    src/lpr.c \
    src/master.c \
    src/misc.c \
    src/mkmkmk.c \
    src/mount.c \
    src/msg.c \
    src/nntp.c \
    src/nntpgw.c \
    src/nntplist.c \
    src/notify.c \
    src/param.c \
    src/pop.c \
    src/process.c \
    src/qstest.c \
    src/remote.c \
    src/rident.c \
    src/script.c \
    src/service.c \
    src/sftp.c \
    src/shio.c \
    src/shutter.c \
    src/smtp.c \
    src/smtpgate.c \
    src/smtp_lib.c \
    src/socks.c \
    src/socks4.c \
    src/sox.c \
    src/spinach.c \
    src/ssi.c \
    src/stls.c \
    src/sudo.c \
    src/svconf.c \
    src/svport.c \
    src/svstat.c \
    src/syslog.c \
    src/tcprelay.c \
    src/telnet.c \
    src/textconv.c \
    src/thmain.c \
    src/thruwayd.c \
    src/tsp.c \
    src/udprelay.c \
    src/uns.c \
    src/url.c \
    src/urlfind.c \
    src/utmpident.c \
    src/vaddr.c \
    src/version.c \
    src/vsap.c \
    src/wais.c \
    src/whois.c \
    src/X.c \
    src/xferlog.c \
    src/xflash.c \
    src/yshell.c \
    src/delegate.c \
    putsigned.c \
    srcsign.c \
    src-srcsign.c \
    mkmkmk.c 

LOCAL_CFLAGS := -D_FILE_OFFSET_BITS=64 -Doff64_t=_off64_t -DUSE_IPv6 -DHAVE_PTHREADS -DBISTSPEED

LOCAL_LDLIBS := -lz -llog

include $(BUILD_EXECUTABLE)

最佳答案

这不是 NDK 独有的:可执行文件需要有一个 main 函数。您是要构建库还是可执行文件?对于 NDK,您几乎总是需要一个库。为此,您应该使用 BUILD_SHARED_LIBRARY 而不是 BUILD_EXECUTABLE。如果你想要一个可执行文件,添加一个 main 函数。

关于android - 在android中编译 native 代码。错误 : undefined reference to 'main' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50509726/

相关文章:

java - 如何创建一个数组字符串来打印android中的元素列表

Android - 缺少 C2DM.jar 文件

c++ - 为什么 NDK 在构建时抛出 undefined reference 错误?

android - 添加日志时 CMakeLists.txt (target_link_libraries) 中的 CMake 错误

android - 使用 Android NDK 通过 openGLES2 渲染视频帧

android - 我需要更新什么才能获得最新的 recyclerview 方法?

android - admob 广告不显示

c - 为什么这个可变参数函数在 Windows x64 上的第 4 个参数上失败?

c++ - 如何在动态库(/MD)项目中使用静态库(/MT)?

python - 如何在 Windows 上运行的 PyQt 应用程序中隐藏控制台窗口?