首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在android ndk中编译dsplink应用程序开发jni包装器

如何在android ndk中编译dsplink应用程序开发jni包装器
EN

Stack Overflow用户
提问于 2012-06-25 19:14:16
回答 1查看 1.2K关注 0票数 0

我已经在android omapl138板上运行了dsplink应用程序,我可以在终端中运行该应用程序。我已经在ndk中包含了dsplink应用程序,并尝试使用以下Android.mk进行编译

代码语言:javascript
复制
LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)

LOCAL_LDLIBS += $(LOCAL_PATH)/dsplink.a

LOCAL_C_INCLUDES += C:\dsplink_1_65_01_05_eng\dsplink\gpp\export\INCLUDE\Linux\OMAPL138\sys
LOCAL_C_INCLUDES += C:\dsplink_1_65_01_05_eng\dsplink\gpp\export\INCLUDE\Linux\OMAPL138\usr
LOCAL_C_INCLUDES += C:\dsplink_1_65_01_05_eng\dsplink\gpp\inc\sys\linux
LOCAL_C_INCLUDES += C:\dsplink_1_65_01_05_eng\dsplink\gpp\src\api
LOCAL_C_INCLUDES += C:\dsplink_1_65_01_05_eng\dsplink\gpp\export\INCLUDE\Linux\OMAPL138\internal
LOCAL_C_INCLUDES += C:\dsplink_1_65_01_05_eng\dsplink\gpp\export\INCLUDE\Linux\OMAPL138\sys\arch

LOCAL_MODULE    := libdsp-message
LOCAL_SRC_FILES := message.c message_os.c

include $(BUILD_SHARED_LIBRARY)

在编译时,我得到以下错误

代码语言:javascript
复制
"Compile thumb : dsp-message <= message.c

"Compile thumb : dsp-message <= message_os.c

SharedLibrary  : libdsp-message.so

C:/NDK/android-ndk-r8/samples/two-libs//jni/dsplink.a(dsplink.o): In
function `DRV_Initialize':
_sync_usr.c:(.text+0xb10): undefined reference to `getpagesize' C:/NDK/android-ndk-r8/samples/two-libs//jni/dsplink.a(dsplink.o): In
function `DRV_ProtectInit':
**_sync_usr.c:(.text+0x24b4): undefined reference to `semget'**
_sync_usr.c:(.text+0x24d4): undefined reference to `__errno_location'
_sync_usr.c:(.text+0x24f4): undefined reference to `semget'
_sync_usr.c:(.text+0x2538): undefined reference to `semctl' C:/NDK/android-ndk-r8/samples/two-libs//jni/dsplink.a(dsplink.o): In
function `DRV_ProtectExit':
_sync_usr.c:(.text+0x25dc): undefined reference to `semctl' C:/NDK/android-ndk-r8/samples/two-libs//jni/dsplink.a(dsplink.o): In
function `DRV_ProtectEnter':
_sync_usr.c:(.text+0x26b4): undefined reference to `semop'
_sync_usr.c:(.text+0x26c4): undefined reference to `__errno_location' C:/NDK/android-ndk-r8/samples/two-libs//jni/dsplink.a(dsplink.o): In
function `DRV_ProtectLeave':
_sync_usr.c:(.text+0x2800): undefined reference to `semop' C:/NDK/android-ndk-r8/samples/two-libs//jni/dsplink.a(dsplink.o): In
function `DRV_installCleanupRoutines':
_sync_usr.c:(.text+0x2898): undefined reference to `sigemptyset'
_sync_usr.c:(.text+0x28a4): undefined reference to `sigfillset' C:/NDK/android-ndk-r8/samples/two-libs//jni/dsplink.a(dsplink.o): In
function `NOTIFY_eventWorker':
_sync_usr.c:(.text+0x7ee4): undefined reference to `sigfillset' C:/NDK/android-ndk-r8/samples/two-libs//jni/dsplink.a(dsplink.o): In
function `_SYNC_USR_init':
_sync_usr.c:(.text+0x13ca8): undefined reference to `semget'
_sync_usr.c:(.text+0x13d30): undefined reference to `semctl' C:/NDK/android-ndk-r8/samples/two-libs//jni/dsplink.a(dsplink.o): In
function `_SYNC_USR_exit':
_sync_usr.c:(.text+0x13e34): undefined reference to `semget'
_sync_usr.c:(.text+0x13e84): undefined reference to `semctl' C:/NDK/android-ndk-r8/samples/two-libs//jni/dsplink.a(dsplink.o): In
function `_SYNC_USR_createCS':
_sync_usr.c:(.text+0x14008): undefined reference to `semget'
_sync_usr.c:(.text+0x14020): undefined reference to `__errno_location' C:/NDK/android-ndk-r8/samples/two-libs//jni/dsplink.a(dsplink.o): In
function `_SYNC_USR_enterCS':
_sync_usr.c:(.text+0x14358): undefined reference to `semop'
_sync_usr.c:(.text+0x14368): undefined reference to `__errno_location' C:/NDK/android-ndk-r8/samples/two-libs//jni/dsplink.a(dsplink.o): In
function `_SYNC_USR_leaveCS':
_sync_usr.c:(.text+0x144a0): undefined reference to `semop' collect2: ld returned 1 exit status 

make: ***
[C:/NDK/android-ndk-r8/samples/two-libs//obj/local/armeabi/libdsp-message.so]
Error 1
EN

回答 1

Stack Overflow用户

发布于 2012-09-15 22:04:07

去年2月,当我试图为控制台构建dsplink示例时,我收到了关于semget的投诉。我的错误看起来与您未定义的引用相似。我发现我的错误是由于我试图使用标准Android划船项目提供的libc构建dsplink。当我用TI DSP源代码中的libc替换姜饼2.3.4源代码中的仿生libc时,它解决了我所有的libc引用错误。从这个经验来看,与基本的Android仿生库相比,在与DSP代码库一起使用的C库中似乎有更多对信号量的支持。

建议:我会确保您的Android.mk构建所指向的用于链接的C库是为DSP项目提供的C库,而不是默认的Android bionic libc。

这应该可以解决您的一些或大部分未定义的引用,但我不确定您的Android.mk中是否还有其他问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11188270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档