Android 构建独立库

Android 构建独立库,android,c++,c,cross-compiling,Android,C++,C,Cross Compiling,我正在尝试将一个大项目交叉编译到android(太大,无法将其移植到ndk构建格式)。我来自java世界,所以我对所有这些编译C++和C++都很陌生。事情是这样的: 这个大项目使用xerces-c作为一个库,当时它依赖于ICU转码器。我交叉编译了这两个文件,生成了libxerces-c.a、libicuuc.a和libicudata.a 当我交叉编译我的大项目时,configure检查头(它们是)和xerces-c库。但是,当我运行make命令时,执行失败,因为编译命令中没有-licuuc-li

我正在尝试将一个大项目交叉编译到android(太大,无法将其移植到ndk构建格式)。我来自java世界,所以我对所有这些编译C++和C++都很陌生。事情是这样的:

这个大项目使用xerces-c作为一个库,当时它依赖于ICU转码器。我交叉编译了这两个文件,生成了libxerces-c.a、libicuuc.a和libicudata.a

当我交叉编译我的大项目时,configure检查头(它们是)和xerces-c库。但是,当我运行make命令时,执行失败,因为编译命令中没有-licuuc-licudata

有没有办法创建包含libicuuc和libicudata的独立libxerces-c?我可以在CFLAGS、CXXFLAGS或LDFLAGS中包含哪些标志?配置脚本上的某些参数

因为我对这方面还不太熟悉,所以举个例子会很有用。
提前感谢您的帮助

在Makefiles中,您可以定义要在所有命令行中使用的表达式。如果正确使用此工具,则可以根据需要对任意多(或少数)个文件使用相同的命令。在其他项目的Makefiles中,您会看到人们通常使用CFLAGS作为C编译器的(意外)标志和选项,使用LIBS作为链接器的对象,但宏可以使用任何您喜欢的名称

您还可以定义要操作的文件及其依赖的文件的列表

在Linux上,一些软件包还安装了一个配置文件,允许使用名为的应用程序查找该软件包的所有标志和库选项。这避免了将显式路径硬连接到Makefile中

以下是一些教程:


在Makefiles中,您可以定义要在所有命令行中使用的表达式。如果正确使用此工具,则可以根据需要对任意多(或少数)个文件使用相同的命令。在其他项目的Makefiles中,您会看到人们通常使用CFLAGS作为C编译器的(意外)标志和选项,使用LIBS作为链接器的对象,但宏可以使用任何您喜欢的名称

您还可以定义要操作的文件及其依赖的文件的列表

在Linux上,一些软件包还安装了一个配置文件,允许使用名为的应用程序查找该软件包的所有标志和库选项。这避免了将显式路径硬连接到Makefile中

以下是一些教程:


只为链接器指定所需的附加库有什么不对?我需要更改makefile(几个),这在9个库中发生。不仅仅是xerces-c,所以在最后我得到了1000-l标志。我只是想知道是否有任何方法可以做到这一点,并节省所有更改20K行配置的时间,并且使文件编译器/链接器标志特定于实现。可能有一种方法可以实现您的要求,但这取决于您的(交叉)编译器。或者,您提到的
configure
脚本表明您可能有一个基于Autoconf的生成系统。如果是这样,那么您可以在少量的小(ish)
configure.ac
configure.in
文件中进行更改,以将所需的库添加到链接中。如果构建系统也使用Automake,这几乎是确定无疑的。或者作为另一种选择,尝试运行
configure--help
。使用Autotools构建系统,至少可以为您提供有关所有选项和变量的信息,您可以调整这些选项和变量以调整构建行为。其中一些是基于自动工具的构建系统的标准配置;其他可能是特定于项目的。只为链接器指定所需的附加库有什么错?我需要更改makefiles(几个),这在9个库中发生。不仅仅是xerces-c,所以在最后我得到了1000-l标志。我只是想知道是否有任何方法可以做到这一点,并节省所有更改20K行配置的时间,并且使文件编译器/链接器标志特定于实现。可能有一种方法可以实现您的要求,但这取决于您的(交叉)编译器。或者,您提到的
configure
脚本表明您可能有一个基于Autoconf的生成系统。如果是这样,那么您可以在少量的小(ish)
configure.ac
configure.in
文件中进行更改,以将所需的库添加到链接中。如果构建系统也使用Automake,这几乎是确定无疑的。或者作为另一种选择,尝试运行
configure--help
。使用Autotools构建系统,至少可以为您提供有关所有选项和变量的信息,您可以调整这些选项和变量以调整构建行为。其中一些是基于自动工具的构建系统的标准配置;其他可能是项目特定的。