gpt4 book ai didi

android - 在android上编译需要STL的库

转载 作者:太空宇宙 更新时间:2023-11-03 10:52:37 25 4
gpt4 key购买 nike

我正在尝试使用 android ndk 为 android 模拟器的 x86 发行版构建一个库。该库使用 scons 进行构建,并具有一堆 STL 和 boost 依赖项。到目前为止,我已经将 --cxx 和 --cc 设置为 android 工具链附带的编译器,并将 gcc 的 sysroot 设置为 ndk 附带的平台特定根目录。

现在,我收到类似 error: ctime: No such file or directory 等的错误。我看到 STL 库的 android ndk 中有 .a 和 .so 文件,我该如何询问 scons/the编译器链接到这些?

最佳答案

您必须配置库路径,这是传递给编译器的传统“-L”标志,在本例中为 gcc。 (您应该使用 g++ 而不是 gcc 吗?)

这是通过设置 LIBPATH SCons 构造变量来完成的,如前所述 here .请注意,SCons 以可移植的方式执行此操作,因此您无需在路径中指定 -L。以下是我通常如何执行此操作的摘录:

libPaths = [
'/pathToNDK/build/cxx-stl/gnu-libstdc++/lib',
'/anotherLibPath',
'/and/yet/another'
]

includePaths = [
'/pathToNDK/build/cxx-stl/gnu-libstdc++/include',
'/anotherIncludePath',
'/and/yet/another/include'
]

env.Append(LIBPATH = libPaths, CPPPATH = includePaths)
env.Library(target='yourTarget', source = 'sourceFile.cc')
env.Program(target='yourBinary', source = 'yourSource')

请注意,我还介绍了如何指定包含路径(传递给编译器的传统“-I”标志)。这是将指定的包含和库路径附加到环境中。如果您不想追加,请改用 env.Replace()。现在,同一环境中的所有构建器都将使用这些路径,在此示例中,Library()Program() 构建器都将使用指定的路径。

此外,如果您要使用的路径在项目目录内(在同一目录或 SConstruct 的子目录中),那么您不需要使用完整的绝对路径,但可以在前面加上“#”并指定路径相对于根级 SConstruct。

关于android - 在android上编译需要STL的库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10986473/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com