c++ - 为 ARM 平台编译库时出错

标签 c++ compiler-construction compiler-errors gstreamer pkg-config

我正在使用我的工具链为 ARM 编译 gst-plugins-bad。我编译了构建它所需的一切,包括 gstreamer、libmms 等...并将与 pkg-config 相关的 header 、库和文件放在我的 sysroot 中。

当我配置一切时似乎没问题,但尝试编译结果:

luca@luca-work-laptop:~/gstreamer/gst-plugins-bad-0.10.21$ make
make  all-recursive
make[1]: Entering directory `/home/luca/gstreamer/gst-plugins-bad-0.10.21'
Making all in gst-libs
make[2]: Entering directory `/home/luca/gstreamer/gst-plugins-bad-0.10.21/gst-libs'
Making all in gst
make[3]: Entering directory `/home/luca/gstreamer/gst-plugins-bad-0.10.21/gst-libs/gst'
Making all in interfaces
make[4]: Entering directory `/home/luca/gstreamer/gst-plugins-bad-0.10.21/gst-libs/gst/interfaces'
make  all-am
make[5]: Entering directory `/home/luca/gstreamer/gst-plugins-bad-0.10.21/gst-libs/gst/interfaces'
make[5]: Nothing to be done for `all-am'.
make[5]: Leaving directory `/home/luca/gstreamer/gst-plugins-bad-0.10.21/gst-libs/gst/interfaces'
make[4]: Leaving directory `/home/luca/gstreamer/gst-plugins-bad-0.10.21/gst-libs/gst/interfaces'
Making all in signalprocessor
make[4]: Entering directory `/home/luca/gstreamer/gst-plugins-bad-0.10.21/gst-libs/gst/signalprocessor'
make[4]: Nothing to be done for `all'.
make[4]: Leaving directory `/home/luca/gstreamer/gst-plugins-bad-0.10.21/gst-libs/gst/signalprocessor'
Making all in video
make[4]: Entering directory `/home/luca/gstreamer/gst-plugins-bad-0.10.21/gst-libs/gst/video'
  CC     libgstbasevideo_0.10_la-gstbasevideoutils.lo
  CC     libgstbasevideo_0.10_la-gstbasevideocodec.lo
  CC     libgstbasevideo_0.10_la-gstbasevideodecoder.lo
  CC     libgstbasevideo_0.10_la-gstbasevideoencoder.lo
  CC     libgstbasevideo_0.10_la-gstbasevideoparse.lo
  CCLD   libgstbasevideo-0.10.la
libtool: link: warning: library `/home/luca/.../arm-2010q1_vsync/arm-none-linux-gnueabi/libc/usr/lib/libgstbase-0.10.la' was moved.
libtool: link: warning: library `/home/luca/.../arm-2010q1_vsync/arm-none-linux-gnueabi/libc/usr/lib/libgstreamer-0.10.la' was moved.
libtool: link: warning: library `/home/luca/.../arm-2010q1_vsync/arm-none-linux-gnueabi/libc/usr/lib/libgobject-2.0.la' was moved.
libtool: link: warning: library `/home/luca/.../arm-2010q1_vsync/arm-none-linux-gnueabi/libc/usr/lib/libgmodule-2.0.la' was moved.
libtool: link: warning: library `/home/luca/.../arm-2010q1_vsync/arm-none-linux-gnueabi/libc/usr/lib/libgthread-2.0.la' was moved.
libtool: link: warning: library `/home/luca/.../arm-2010q1_vsync/arm-none-linux-gnueabi/libc/usr/lib/libglib-2.0.la' was moved.
libtool: link: warning: library `/home/luca/.../arm-2010q1_vsync/arm-none-linux-gnueabi/libc/usr/lib/libgstvideo-0.10.la' was moved.
/usr/lib/libxml2.so: could not read symbols: File in wrong format
collect2: ld returned 1 exit status
make[4]: *** [libgstbasevideo-0.10.la] Error 1
make[4]: Leaving directory `/home/luca/gstreamer/gst-plugins-bad-0.10.21/gst-libs/gst/video'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/home/luca/gstreamer/gst-plugins-bad-0.10.21/gst-libs/gst'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/home/luca/gstreamer/gst-plugins-bad-0.10.21/gst-libs'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/luca/gstreamer/gst-plugins-bad-0.10.21'
make: *** [all] Error 2

它似乎试图链接到我的桌面 libxml2。为什么它不链接到我工具链中包含所有符号的工具链?

最佳答案

你的configure脚本支持autoconf交叉编译吗? 在 configure.in 中,调用 AC_PROG_CC 后 shell 变量 cross_compiling 的值是多少?

如果设置为 no,那么 makefile 是否设置为使用您的交叉编译器?

要设置这些,您可以在手册中覆盖它们或使用环境变量,例如 下面的例子

导出 CC=arch-gcc 导出 CXX=arch-c++ 导出 arch-ld 导出 AR=arch-ar 导出 AS=arch-as 导出 NM=arch-nm 导出 STRIP=arch-strip

如果设置为yes,则检查makefile中专门针对libxml的include路径。

在 ARM 上编译 gst-plugins-bad 的另一个可能资源如下 guide

关于c++ - 为 ARM 平台编译库时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9604298/

相关文章:

c++ - 不同版本的 C/C++

c++ - 如何比较 time_t 和 std::filesystem::file_time_type

parsing - 将语法转换为最有效的解析器

c++ - 将 int 数组的内容写入 vector

java - java中初始化字符串的大小

java - 混合 Groovy + Java 项目导致字符串语法冲突

scala编译错误: type mismatch; found: IndexedSeq[Int] required: scala. collection.immutable.Seq[Int]

'Graph' 错误的冲突类型

c++ - C 共享对象,带有 C++ 存档、静态 Ctors/Dtors 和 dlopen

c++ - 判断IP是否被封