2015-12-11 94 views
1

我正在尝试将一个大项目交叉编译为android(太大而无法将其移植到ndk-build格式)。我来自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中的标志?配置脚本中的一些参数?

因为我对此很新,所以一个例子会非常有用。 在此先感谢您的帮助

+1

有什么不好只是指定需要额外的库链接? –

+0

我需要更改makefiles(几个),并且这发生在9个库中。不仅仅是xerces-c,最终我最终得到了1000 -l标志。我只是想知道是否有任何的方式来做到这一点,减少更换20K线的所有的时间配置并生成文件 –

+0

编译器/连接器选项是特定于实现。可能有办法实现你所要求的,但这取决于你的(交叉)编译器。 –

回答

0

在Makefiles中,您可以定义要在所有命令行中使用的表达式。如果您正确使用此设施,则可以根据需要在多个(或几个)文件上执行相同的命令。在你从其他项目中看到的Makefiles中,你会发现人们通常使用CFLAGS作为C编译器的(惊喜)标志和选项,LIBS作为链接器的东西,但是你可以使用你喜欢的任何名称作为宏。

您也可以定义要操作的文件列表以及它们依赖的文件。

在Linux上一些包也有一个配置文件安装,让所谓的pkg-config的应用中找出所有的标志,并为封装库选项。这避免了必须将显式路径硬连线到Makefile中。

这里有几个教程:

Simple tutorial.

Another intro