gradle实验库link顺序
gradle experimental library link order
我正在尝试使用 android gradle 实验性插件 0.7.0-alpha5 构建应用程序。
我有一个应用程序 "mainProject" 依赖于本地库 "nativeLibrary",它本身依赖于其他几个库(预编译与否)
当我构建我的 nativeLibrary 项目时,一切都可以编译并且 link 很好。库是按照我在
中给出的顺序 linked
dependencies
{
lib1
lib2
lib3
}
阻止。
当我尝试构建我的 mainProject 时,项目失败 link,因为库传递给 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
为了拥有它link,我必须手动添加标签
-Wl,--start-group
lib2
lib3
lib1
-Wl,--end-group
是否有使用 gradle 实验性插件的自动方法来指定库 linked 的顺序?还是我必须先创建一个任务来编辑 options.txt 文件,然后再尝试 link?
谢谢!!
编辑:
我在 gradle 论坛上找到了一些有用的东西,但是它似乎不适用于 gradle-experimental:
原来是当前gradle实验版的bug。我已经填写了一个错误请求,并将在处理时更新此线程。
见https://code.google.com/p/android/issues/detail?id=208198&thanks=208198&ts=1461675016
我正在尝试使用 android gradle 实验性插件 0.7.0-alpha5 构建应用程序。
我有一个应用程序 "mainProject" 依赖于本地库 "nativeLibrary",它本身依赖于其他几个库(预编译与否)
当我构建我的 nativeLibrary 项目时,一切都可以编译并且 link 很好。库是按照我在
中给出的顺序 linkeddependencies
{
lib1
lib2
lib3
}
阻止。
当我尝试构建我的 mainProject 时,项目失败 link,因为库传递给 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
为了拥有它link,我必须手动添加标签
-Wl,--start-group
lib2
lib3
lib1
-Wl,--end-group
是否有使用 gradle 实验性插件的自动方法来指定库 linked 的顺序?还是我必须先创建一个任务来编辑 options.txt 文件,然后再尝试 link?
谢谢!!
编辑:
我在 gradle 论坛上找到了一些有用的东西,但是它似乎不适用于 gradle-experimental:
原来是当前gradle实验版的bug。我已经填写了一个错误请求,并将在处理时更新此线程。
见https://code.google.com/p/android/issues/detail?id=208198&thanks=208198&ts=1461675016