android - NDK 与 cmake 的链接库
问题描述
我有一个执行 opengl (es 2.0) 渲染的 c++ 库,我想在 android 上使用它。将库与target_link_libraries(mylib log GLESv2)
我链接时收到以下错误:
ld: error: cannot open crtbegin_so.o: No such file or directory
ld: error: cannot open crtend_so.o: No such file or directory
ld: error: cannot find -llog
ld: error: cannot find -lGLESv2
ld: error: cannot find -lm
ld: error: cannot find -lstdc++
ld: error: cannot find -lm
ld: error: cannot find -ldl
ld: error: cannot find -lc
ld: error: cannot find -ldl
如果我从 android ndk 手动提供一个特定的目录,它就可以工作。在 cmake 中,这看起来类似于:
link_directories( ${ANDROID_NDK}/platforms/${ANDROID_API}/arch-${ANDROID_ABI}/usr/lib )
我想知道这是否是解决错误的正确方法。在这个简单的示例中,不需要额外定义 link_directories。我的图书馆有什么不同?
解决方案
原因很简单。我正在覆盖我的 cmake 文件中的编译器标志:
SET(CMAKE_CXX_FLAGS "-foo" )
当我将其更改为
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -foo" )
链接问题消失了。
推荐阅读
- php - 如何将 WordPress 元框页面属性-> 页面模板下拉菜单转换为单选按钮?
- java - Update() 方法在带有 h2 数据库的 Play Framework 中不起作用
- javascript - D3 将条形图值旋转 90 度
- java - 使用 modelmapper 将列表大小映射到 int 字段
- python - 为数据框编写循环时出现问题
- c# - 从父类的方法中使用子类的静态覆盖属性
- spring - FlatFileItemWriterBuilder-headerCallback() 获取写入的行数
- mailgun - Mailgun 转发到谷歌组停止工作
- python - 选择特定多索引级别的行
- javascript - Meteor Safari 视频不显示