适用于Android的交叉编译v4l2-ctl

时间:2016-01-07 05:04:11

标签: android makefile v4l2

我有一台USB摄像头在Android上运行(通过Android On-The-Go),我正在寻找改变相机曝光的方法。我已经能够通过在Linux机器上使用v4l2-ctl来实现这一点,并且我希望在我的Android设备上也能这样做。

安装文件提到以下内容:

Android Cross Compiling and Installing:
----------------

v4l-utils will only build using the complete AOSP source tree, because of the
stlport dependency.

List of v4l-utils that supply an Android.mk makefile:
* utils/v4l2-compliance
* utils/v4l2-ctl
* utils/v4l2-dbg

To cross compile an utility you must first configure the shell with Android's
envsetup.sh to add the mm alias, before running lunch to select your target
device.

cd /path/to/aosp
source build/envsetup.sh
lunch
cd /path/to/v4l-utils
cd <utility>
mm

所以我下载了android源代码,成功运行了前两个命令和lunch。然后我cd'd进入v4l-utils/v4l2-ctl并运行mm。我收到以下错误:

make: *** No rule to make target `out/target/product/generic/obj/lib/crtbegin_dynamic.o', needed by `out/target/product/generic/obj/EXECUTABLES/v4l2-ctl_intermediates/LINKED/v4l2-ctl'.  Stop.

我可以尝试解决这个问题吗?

注意:正常编译有效:我可以使用./bootstrap.sh./configuremake制作所有v4l2。

1 个答案:

答案 0 :(得分:3)

我已经想出怎么做了!我发现这些说明很有效,除了这两点:

下载并构建整个Android源

  • 在执行任何操作之前,您需要下载并制作完整的Android源代码。这意味着setting up your environmentdownloading it,然后是building it
  • 确保您下载的是正确版本的Android源代码(即手机上正在运行的版本)。
  • 要获得更快的下载速度,请repo-sync-c一起运行,仅限当前分支
  • 我建议购买一个大小时计费的服务器并在那里运行它。网络连接会更好,机器可能比你自己的好。我在DigitalOcean上有一台8核,16GB的机器。
  • 运行lunch时,我只选择了第一个选项:aosp_arm-eng

设置TOP变量

  • 执行mm步骤时,您会收到错误消息Couldn't locate the top of the tree. Try setting TOP.因此运行export TOP=/location/of/android/source