NDK r6编译静态库的问题

firstime_tzjz 2011-08-21 04:15:27
我在用 NDK r6 编译静态库的时候遇到奇怪的问题:NDK 根本就没有执行编译。Android.mk 文件如下:

LOCAL_PATH:=$(call my-dir)

include $(CLEAR_VARS)
LOCAL_SRC_FILES:= add.c
LOCAL_MODULE:=libadd
LOCAL_PRELINK_MODULE := false
include $(BUILD_STATIC_LIBRARY)

如果换成动态库(即将 BUILD_STATIC_LIBRARY 改为 BUILD_SHARED_LIBRARY),则会正常生成动态库。
如果同时编译可执行文件,则也能执行编译,但编译生成的只有可执行文件,而没有独立的静态库。编译可执行文件的Android.mk 文件如下:

LOCAL_PATH:=$(call my-dir)

include $(CLEAR_VARS)
LOCAL_SRC_FILES:= add.c
LOCAL_MODULE:=libadd
LOCAL_PRELINK_MODULE := false
include $(BUILD_STATIC_LIBRARY)


include $(CLEAR_VARS)
LOCAL_SRC_FILES:=test.c
LOCAL_MODULE:=test
LOCAL_STATIC_LIBRARIES:=libadd
include $(BUILD_EXECUTABLE)


谢谢!
...全文
326 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
firstime_tzjz 2012-06-21
  • 打赏
  • 举报
回复
楼上的方法不行哈。
bingsiju123123 2011-11-07
  • 打赏
  • 举报
回复
写一mk文件在,然后,将其命名为Application.mk(和Android.mk文件在同一级目录哦),Application.mk文件的内容APP_MODULES := libtwolib-first(注意libtwolib-first是要编译静态库的名字),保存后。就可以编译静态库咯。
lazyter1 2011-09-22
  • 打赏
  • 举报
回复
正期待这个答案呢
warpo 2011-09-01
  • 打赏
  • 举报
回复
3楼的这都知道.佩服.
cjsafty 2011-08-23
  • 打赏
  • 举报
回复
正需要答案啊。
groce 2011-08-22
  • 打赏
  • 举报
回复
NDK r6 默认不支持静态库的 install 操作。可以将 definitions.mk 脚本里的

module-class-is-installable = $(if $(NDK_MODULE_CLASS.$1.INSTALLABLE),$(true),$(false))

修改为:

module-class-is-installable = $(if $(NDK_MODULE_CLASS.$1.INSTALLABLE),$(true),$(true))


这样强制 NDK 对静态库进行 install,即可单独生成静态库。
xqhrs232 2011-08-22
  • 打赏
  • 举报
回复
提供的例子程序也不能编译吗?
firstime_tzjz 2011-08-22
  • 打赏
  • 举报
回复
没人知道么?

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧