android - CMake交叉编译包 : how to set linker path to find compiler support library?

标签 android c++ linux android-ndk cmake

我正在尝试交叉编译 qhull Android 库,在 Linux x86-64 主机上。我是 CMake 的新手,但对其他构建系统工具很有经验。

根据我找到的所有建议,我已经设置了一个工具链文件,它适用于其他几个包。然而,无论我尝试什么,似乎都没有增加一个或多个 qhull 可执行程序的链接器路径。问题是它找不到 Android NDK 的 libsup++.a,这是其编译器 (GCC) 的隐式依赖项。如果我使用生成的链接命令并手动添加 -Lpath_to_libsup++.a,则链接成功。

在我的工具链文件中,我尝试过的有:

  • CMAKE_FIND_ROOT_PATH
  • link_directories()
  • CMAKE_EXE_LINKER_FLAGS

我没有发现它的 CMakeLists.txt 有任何异常,至少就第一个故障点 (user_eg3) 而言。

如果可能的话,我不想给库打补丁。我知道很多其他人在 Android 上使用它(它是点云库的依赖项),所以我认为我可能遗漏了一个步骤。

顺便说一句,我使用的是 CMake v3.4.3、Android NDK r10e 和 qhull v7.2.0。

最佳答案

我找到了解决方法。

this post , Florian提到 CMake 在内部将 CMAKE_EXE_LINKER_FLAGS_INIT 设置为 $ENV{LDFLAGS}。我发现如果我设置环境变量 LDFLAGS=-Lpath_to_libsup++.a,它会传递给链接命令,现在成功了。

我仍然想知道这个问题的正确 CMake 解决方案。或者,如果问题出在 qhull 上,那么也许有人可以查看它的 CMakeLists.txt(上面链接)并指出它做错了什么。

关于android - CMake交叉编译包 : how to set linker path to find compiler support library?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35278102/

相关文章:

android - 如何更改Google Play和Android主屏幕上的图标?

php - 在 cron 作业中执行 PHP 脚本

android - java.lang.NoClassDefFoundError : com. 谷歌.android.gms.common.AccountPicker

c++ - 并行循环中的 Matlab 引擎

c++ - 如何从WAV文件中获取采样率?

c++ - MSVC 上的 ctime_r

linux - 接收信号时阻塞的系统调用会发生什么?

c# - 如何通过 sudo 运行命令并通过 ssh .net c# 输入密码

android - 用户可以选择输入详细信息或取消的对话框或表单

java - 如何对嵌入 2 个不同卡片 View 的同名回收器 View 使用不同的 Activity ?