0

我正在尝试使用 android gradle 实验插件 0.7.0-alpha5 构建一个应用程序。

我有一个依赖于本机库“nativeLibrary”的应用程序“mainProject”,它本身依赖于其他几个库(预编译与否)

当我构建我的 nativeLibrary 项目时,一切都可以很好地编译和链接。图书馆按照我在

dependencies
{
     lib1
     lib2
     lib3
}

堵塞。

当我尝试构建我的 mainProject 时,该项目无法链接,因为将库传递给 g++ 编译器的顺序是错误的(以随机顺序),这里是主项目的 options.txt 的摘录:

-shared
-Wl,-soname,mainProject.so
-o
// bunch oh .o files

lib2 // random order
lib3
lib1

-Wl,--no-undefined
-Wl,-z,noexecstack
-Wl,-z,relro
-Wl,-z,now
--sysroot=somePath
-Wl,--build-id
-LPathToC++Compiler
-lc++_static
-no-canonical-prefixes
-L/somePth
-latomic
-llog
-landroid
-lEGL
-lGLESv2
-lz

为了让它链接,我必须手动添加标签

-Wl,--start-group
lib2
lib3
lib1
-Wl,--end-group

是否有使用 gradle 实验插件的自动方式来指定库链接的顺序?或者我是否必须在尝试链接之前创建一个任务来编辑 options.txt 文件?

谢谢!!

编辑:

我在 gradle 论坛上找到了一些有用的东西,但它似乎不适用于 gradle-experimental:

https://discuss.gradle.org/t/c-cross-compiling-with-mingw-w64-is-there-a-way-to-modify-linker-flags/7390/5

4

1 回答 1

0

所以事实证明这是当前 gradle 实验版本中的一个错误。我已经填写了一个错误请求,并将在处理此线程时保持更新。

https://code.google.com/p/android/issues/detail?id=208198&thanks=208198&ts=1461675016

于 2016-04-26T12:51:24.423 回答