交叉编译gstreamer失败:x86-64– > ARMv6 32位【JAVA教程】

!
也想出现在这里? 联系我们
信息

交叉编译gstreamer失败:x86-64– > ARMv6 32位,第1张

概述交叉编译gstreamer失败:x86-64 – > ARMv6 32位

我试图在RPI 1的x86_64(linux)系统上构build一个项目。我有一个工作工具链 – 我已经构build了一个小程序并在RPi(“Hello World”)上运行它。

我试图build立的项目是gstreamer 。

在configuration脚本中 ,我添加了相应的–host = ,它find了所有正确的工具并成功完成。 但是,当我做这个项目的时候,我得到了以下错误:

In file included from gsttracerutils.h:30:0,from gst_private.h:68,from gst.c:96: ../gst/gstutils.h: In function \’__gst_slow_read64_be\’: ../gst/gstutils.h:111:61: error: left shift count >= wIDth of type [-Werror=shift-count-overflow] (((guint##__size) (((const guint8 *) (__data))[__IDx])) << (__shift)) ^ ../gst/gstutils.h:164:36: note: in expansion of macro \’_GST_GET\’ #define _GST_READ_UINT64_BE(data) (_GST_GET (data,64,56) | ^ ../gst/gstutils.h:184:10: note: in expansion of macro \’_GST_READ_UINT64_BE\’ return _GST_READ_UINT64_BE (data); ^

看起来(至less对我来说)像编译器抱怨32位cpu上的64位types(这是正确的)。

使用新的驱动程序模块交叉编译linux Arm核心

链接器删除传递给它的目标文件上的字符?

用于arm-linux-gcc的C / C ++目标的简单makefile

Cygwin GCC交叉编译二进制文件?

交叉编译Go

这是工具链编译器的问题吗? 或者是其他东西?

我最初在rpi本身构build(成功)gstreamer。 但是,由于这花了很长时间,我需要能够重新制作应用程序,我想build立一个快速的系统。

澄清:我使用的构build工具链是crosstool-ng 。 我运行configure命令为:

./configure –disable-gtk-doc –disable-examples –disable-benchmarks –disable-gtk-doc-HTML –host=armv6-rpi-linux-gnueabihf

并从configuration日志(config.log)中:

## ———– ## ## Core tests. ## ## ———– ## configure:3217: checking build system type configure:3231: result: x86_64-unkNown-linux-gnu configure:3251: checking host system type configure:3264: result: armv6-rpi-linux-gnueabihf configure:3284: checking target system type configure:3297: result: armv6-rpi-linux-gnueabihf configure:3343: checking for a BSD-compatible install configure:3411: result: /usr/bin/install -c configure:3422: checking whether build environment is sane configure:3477: result: yes configure:3536: checking for armv6-rpi-linux-gnueabihf-strip configure:3552: found /nas/temp/build/rpi/tc/x-tools/armv6-rpi-linux-gnueabihf/bin/armv6-rpi-linux-gnueabihf-strip configure:3563: result: armv6-rpi-linux-gnueabihf-strip

这表明构build系统是x86_64,主机和目标是armv6(…)。

如上所示,错误涉及处理64位数据的macros。

我可以把这个相同的项目树,运行autogen.sh,configure.sh,并在rpi-1本身(使用pignus版本的gcc工具 – pignus是专门为rpi-1的fedora 23自旋),它完全build立成功。 我也在x86_64系统上构build了这个项目,这也是成功的。

如前所述,我已经使用相同的工具链 – “Hello World”程序构build了一个简单的程序,并在x86_64系统上成功编译和链接,然后在rpi上成功运行。

所以,我的问题是:这可能是交叉编译器工具链的一个问题/错误,或者可能是项目源代码中的东西? 任何build议在哪里看,或尝试什么?

TIA

Python在windows上交叉编译Mac

正确的方式来包括使用g ++时的C + +系统头文件 – arm-linux-gnueabi?

你如何确定glibc(等)库的安装版本?

交叉编译PHP

尽pipe在user-config.jam中定义了,但为arm提升交叉编译,工具集无法识别

从取消这些宏中 ,编译器特别抱怨的是,将由56位剩余的类型guint64的值guint64该类型,因此是未定义的。

现在,对我说的是,你正在拿起主机的 glibconfig.h,其中guint64必须是unsigned long类型定义,即在该机器上是64位类型,但是一旦你把它提供给32位位ARM编译器。 在Pi本身,你可能有一个适当配置的glibconfig.h,其中guint64是unsigned long long的typedef,因此构建本地工作。

您需要将构建指向Pi的Glib头文件和库而不是主机(这种编译错误几乎可以肯定只是在交叉链接器找到x86库并拒绝这些错误时延迟最终的链接失败)。 我自己没有GStreamer的经验,所以我不能说如何做到这一点,但根据这个邮件列表的帖子,我发现,正确的做法似乎涉及覆盖PKG_CONfig_PATH。

我遇到的问题正是如此 – 让交叉编译器看到目标环境,而不是构建。

在一个子目录中安装Rpi也是我在过去几天的工作,我发现了一个OsX主机的描述,但是因为我只有windows计算机,所以我做了一些解决方法来让RPi1在一个NFS共享上启动一个Trusty虚拟机而不是SD卡: https : //github.com/rmast/rpi-build-and-boot

总结

以上是内存溢出为你收集整理的交叉编译gstreamer失败:x86-64 – > ARMv6 32位全部内容,希望文章能够帮你解决交叉编译gstreamer失败:x86-64 – > ARMv6 32位所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

© 版权声明
THE END
喜欢就支持一下吧
点赞112 分享
评论 抢沙发

请登录后发表评论

    请登录后查看评论内容