我正在Android平台上构建一个守护进程。我已经交叉编译了现有的代码,它存在于Linux到Android中。请考虑我的以下2个案例 -
但是,
2通过编写在供应商特定文件夹中编写的Android.mk文件,已将交叉编译库推入AOSP代码。我使用了BUILD_PREBUILTS方法,并成功地将库推送到/ system / lib。现在,当我尝试执行我的应用程序(使用CMake编译)时,我收到链接器错误。
以下是我得到的错误(参考例) -
文件夹总数 - 3
a. abc folder which produces output libabc.so and links to libdef.so and
libghi.so
b. def folder which produces output libdef.so
c. ghi folder which produces output libghi.so
当我直接在/ system / lib中推送所有3个库(libabc.so,libdef.so,libghi.so)和连接所有3个库的可执行文件(drive_test)时,我没有任何问题。但是,当我将其与AOSP构建一起推送时,执行可执行文件时会出现以下错误(drive_test) -
一个。无法链接../abc/def.so文件。
我无法调试如何解决此链接器问题。我不知道是否因为CMake(或)任何其他问题。
答案 0 :(得分:0)
如果您正在尝试创建系统守护程序(某些内容位于/ system / bin中),请不要使用NDK。只需使用AOSP构建系统。
在mydaemon / Android.bp中(确保将此路径添加到根Android.bp文件中):
cc_library {
name: "libmylib",
srcs: ["mylib.cpp"],
}
cc_binary {
name: "mydaemon",
srcs: ["mydaemon.cpp"],
shared_libs: ["libmylib"],
}
构建系统将处理将库和二进制文件放到适合您的位置。