【发布时间】:2015-12-11 22:13:43
【问题描述】:
我正在尝试将一个大项目交叉编译到 android(太大而无法将其移植到 ndk-build 格式)。我来自 Java 世界,所以我对所有这些编译、C、C++ 都很陌生。事情是这样的:
这个大项目使用 xerces-c 作为库,当时它依赖于 ICU 转码器。我已经对它们进行了交叉编译,生成了 libxerces-c.a、libicuuc.a 和 libicudata.a
当我交叉编译我的大项目时,配置会检查头文件(它们是)和 xerces-c 库。但是,当我运行 make 命令时,执行失败,因为 -licuuc -licudata 不在编译命令上。
有没有办法创建一个包含 libicuuc 和 libicudata 的独立 libxerces-c?我可以在 CFLAGS、CXXFLAGS 或 LDFLAGS 中包含一些标志?配置脚本上的一些参数?
由于我对此很陌生,所以举个例子会很有用。 提前感谢您的帮助
【问题讨论】:
-
只为链接器指定所需的附加库有什么问题?
-
我需要更改 makefile(几个)并且这发生在 9 个库中。不仅仅是 xerces-c 所以最后我得到了 1000 -l 标志。我只是想知道是否有任何方法可以节省更改 20K 行配置和生成文件的所有时间
-
编译器/链接器标志是特定于实现的。可能有一种方法可以实现您的要求,但这取决于您的(交叉)编译器。
-
另外,您提到
configure脚本表明您可能拥有基于 Autoconf 的构建系统。如果是这样,那么您也许可以在少量(ish)configure.ac或configure.in文件中进行更改,以将所需的库添加到链接中。如果构建系统也使用 Automake,那几乎可以肯定。 -
或者作为另一种选择,尝试运行
configure --help。至少使用 Autotools 构建系统,它会为您提供有关所有选项和变量的信息,您可以调整以调整构建行为。其中一些是基于 Autotools 的构建系统的标准配置;其他的可能是项目特定的。
标签: android c++ c cross-compiling