使用依赖项交叉编译:如何在主机上获得目标依赖项
cross-compile with dependencies: how to get target dependencies on host?
我一直在努力交叉编译OpenCV arm
在我的x64双Xeon运行Ubuntu 16.04
我理解交叉编译器是如何工作的,编译一个简单的项目是很好的,但是OpenCV有很多依赖。
我不明白如何在用于交叉编译的主机上加载这些依赖项(仅头文件?)
我试过了
dpkg --add-architecture armhf
和我已经尝试在sources.list
中添加url来安装依赖项。
我已经尝试安装与:armhf
后缀的依赖关系,但这些依赖关系往往有依赖关系本身,我最终以错误的形式:cannot install
我也试过使用
apt-get build-dep --download-only <dependency>:armhf
但这似乎没有帮助。
那么,首先我想了解一下:
-
我需要依赖的库与源代码,或只是头?我想我只需要标题,但我现在很困惑。
-
我到底需要做些什么来获得主机上的依赖关系,以便交叉编译?
很抱歉,如果它是模糊的;我只是不知道该去哪里找。我看到的每一个关于交叉编译的教程都把依赖关系放在一边,关于交叉编译的OpenCV项目解释假设读者已经知道了所有这些…
Thanks for help
编辑
我在下面添加了我的解决方案,但我觉得这并不理想,因为它需要首先在目标上安装所有内容。显然,无论如何都需要目标上的依赖项,但是不需要为运行时提供所有的开发库和头文件
所以我还在寻找一个更好的解决方案
我设法进行了交叉编译,但是有点痛苦。
到目前为止,我找到的唯一方法是在编译主机上获得依赖项,就是简单地从我安装它们的目标位置复制文件。
需要的文件夹大多是
-
/usr
(特别是usr/include
、/usr/lib
和/usr/bin
) -
/lib
-
/opt
(如果你有任何特殊的库设置)
你可以tar这些文件夹并将它们复制到主机上,或者使用rsync。
之后,您必须确保使用cmake
配置路径。
我把东西复制到一个名为sysroot-chip
的文件夹,与opencv
在同一级别,我的构建目录也在同一级别(在opencv之外)
并为cmake
添加了以下标志:
-D INCLUDE_DIRECTORIES=../sysroot-chip/usr/lib
-D INCLUDE_DIRECTORIES=../sysroot-chip/usr/bin
-D INCLUDE_DIRECTORIES=../sysroot-chip/opt/lib
-D INCLUDE_DIRECTORIES=../sysroot-chip/lib
-D PYTHON2_INCLUDE_PATH=../sysroot-chip/usr/include/python2.7
-D PYTHON2_LIBRARIES=../sysroot-chip/usr/lib/python2.7
-D PYTHON2_NUMPY_INCLUDE_DIRS=../sysroot-chip/usr/lib/python2.7/dist-packages
-D PYTHON3_INCLUDE_PATH=../sysroot-chip/usr/include/python3.4
-D PYTHON3_LIBRARIES=../sysroot-chip/usr/lib/python3.4
-D PYTHON3_NUMPY_INCLUDE_DIRS=../sysroot-chip//usr/lib/python3.4/dist-packages
以及交叉编译工具链标志:
-D CMAKE_TOOLCHAIN_FILE=../opencv-3.1.0/platforms/linux/arm-gnueabi.toolchain.cmaketoolchain.cmake
- 如何从C++中的依赖类型中获得它所依赖的类型
- Cuda C++:设备上的Malloc类,并用来自主机的数据填充它
- EvtExportLogneneneba API正在将远程计算机的事件日志保存到远程PC本身.如何将其保存到主机
- 将--whole archive链接器选项与CMake和具有其他库依赖项的库一起使用
- 将依赖名称显式标记为类型名和模板的奇怪之处
- 在 Windows 上,是否可以让 dll 在不使用 PATH 环境变量的情况下在另一个文件夹中查找依赖项?
- C++GTKMM gui循环依赖关系
- 通过ccmake在cmake中缓存依赖选项
- 当基类是依赖类型时,这是一个缺陷吗
- 从不同的附加依赖项中识别等同命名的函数
- 如何在 CMake 中对目标依赖项进行分组?
- 是否可以依赖函数范围的静态变量来执行程序关闭期间调用的方法?
- 为什么构建目录中新构建的共享库与安装目录中的副本具有不同的依赖项集?
- 如何停止 CLR 主机?
- VS 2015 链接错误 无法构建依赖于 libcurl 的项目
- 通过依赖类型使用非类型模板参数的单类型模板参数类模板的部分专用化
- 为什么内存屏障依赖于变量?
- node-gyp 的先有鸡还是先有蛋的问题:指向依赖项中的头文件
- 如何为在 x86 主机上为 arm 目标交叉编译的项目安装依赖项
- 使用依赖项交叉编译:如何在主机上获得目标依赖项