2

这是我在这里的第一个问题:)。我需要在我的 Archlinux x86_64 系统中编译VideoData(我可以在 Ubuntu 12.04 x86 中编译它,但它对我没有用),但我从 ld 得到了一些错误。

这里

但在我看来,最重要的部分是:

/usr/bin/ld: se salta el /usr/lib/libdl.so incompatible mientras se busca -ldl
/usr/bin/ld: se salta el /usr/lib/libdl.a incompatible mientras se busca -ldl
/usr/bin/ld: se salta el /usr/lib/libnsl.so incompatible mientras se busca -lnsl
/usr/bin/ld: se salta el /usr/lib/libpthread.so incompatible mientras se busca -lpthread
/usr/bin/ld: se salta el /usr/lib/libpthread.a incompatible mientras se busca -lpthread
/usr/bin/ld: se salta el /usr/lib/librt.so incompatible mientras se busca -lrt
/usr/bin/ld: se salta el /usr/lib/libglib-2.0.so incompatible mientras se busca -lglib-2.0
/usr/bin/ld: se salta el /usr/lib/libgstreamer-0.10.so incompatible mientras se busca -lgstreamer-0.10
/usr/bin/ld: se salta el /usr/lib/libgstapp-0.10.so incompatible mientras se busca -lgstapp-0.10
/usr/bin/ld: se salta el /usr/lib/libstdc++.so incompatible mientras se busca -lstdc++
/usr/bin/ld: se salta el /usr/lib/libstdc++.a incompatible mientras se busca -lstdc++
/usr/bin/ld: se salta el /usr/lib/libm.so incompatible mientras se busca -lm
/usr/bin/ld: se salta el /usr/lib/libm.a incompatible mientras se busca -lm
/usr/bin/ld: se salta el /usr/lib/libc.so incompatible mientras se busca -lc
/usr/bin/ld: se salta el /usr/lib/libc.a incompatible mientras se busca -lc
/usr/bin/ld: objs/i86Linux3.xgcc4.6.3/Common/VideoSource.o: referencia sin definir al símbolo 'g_object_set'
/usr/lib32/libgobject-2.0.so.0: error adding symbols: DSO missing from command line
collect2: error: ld devolvió el estado de salida 1
make/Makefile.common:135: recipe for target 'objs/i86Linux3.xgcc4.6.3/VideoPublisher/VideoPublisher.out' failed
make: *** [objs/i86Linux3.xgcc4.6.3/VideoPublisher/VideoPublisher.out] Error 1

这些英语错误是

/usr/bin/ld: skipping incompatible /usr/lib/libdl.so when searching for -ldl
...
...
...

我认为这是与 32 位库的不兼容,但我无法解决。我已经安装了所有这些

[antonio@Antonio-Arch ~]$ pacaur -Qs gstreamer0.10
local/gstreamer0.10 0.10.36-3
    GStreamer Multimedia Framework
local/gstreamer0.10-bad 0.10.23-7
    GStreamer Multimedia Framework Bad Plugin libraries (gst-plugins-bad)
local/gstreamer0.10-bad-plugins 0.10.23-7 (gstreamer0.10-plugins)
    GStreamer Multimedia Framework Bad Plugins (gst-plugins-bad)
local/gstreamer0.10-base 0.10.36-2
    GStreamer Multimedia Framework Base plugin libraries
local/gstreamer0.10-base-plugins 0.10.36-2 (gstreamer0.10-plugins)
    GStreamer Multimedia Framework Base Plugins (gst-plugins-base)
local/gstreamer0.10-ffmpeg 0.10.13-2 (gstreamer0.10-plugins)
    Gstreamer FFMpeg Plugin
local/gstreamer0.10-good 0.10.31-4
    GStreamer Multimedia Framework Good plugin libraries
local/gstreamer0.10-good-plugins 0.10.31-4 (gstreamer0.10-plugins)
    GStreamer Multimedia Framework Good Plugins (gst-plugins-good)
local/gstreamer0.10-ugly 0.10.19-9
    GStreamer Multimedia Framework Ugly plugin libraries
local/gstreamer0.10-ugly-plugins 0.10.19-9 (gstreamer0.10-plugins)
    GStreamer Multimedia Framework Ugly Plugins (gst-plugins-ugly)
local/lib32-gstreamer0.10 0.10.36-2
    GStreamer Multimedia Framework
local/lib32-gstreamer0.10-base 0.10.36-5
    GStreamer Multimedia Framework Base plugin libraries
local/lib32-gstreamer0.10-base-plugins 0.10.36-5
    GStreamer Multimedia Framework Base Plugins (gst-plugins-base)

我也有 gcc-multilib。我不知道我能做什么...有什么帮助吗?:)

非常感谢!对不起我的英语:)

问候!

4

2 回答 2

1

我和你有同样的问题,但是在对 Makefile 进行一些修改后,我能够在 x86_64 Arch Linux 中交叉编译 32 位的应用程序。是生成文件。

基本上我必须做出两个改变:

  1. 修改链接阶段的 -L 标志指向 /usr/lib32 而不是 /usr/lib
  2. 将库 -lgobject-2.0 添加到 LIBS 变量。

在这两个更改之后,您应该能够构建 32 位的 VideoData 演示。错误是由于 ArchLinux 中的 multilib 布局与 CentOs 不同引起的

请注意,如果您想在 x86_64 中运行 32 位 VideoData 演示,您还需要安装一些 Gstreamer 插件的 32 版本。其中一些插件在 multilib 存储库中不可用,因此您必须自己构建它们。另一种方法可能是创建 32 位 chroot 环境。

于 2014-03-04T09:11:32.320 回答
0

事后,您向我解释说需要交叉编译到 32 位。所以我的回答并不能完全解决你的问题。无论如何我都会把它留在这里,因为它包含在 64 位机器上构建示例的有用信息。


我在尝试在 CentOS 6.5、64 位上构建它时也遇到了问题。

为了解决这些问题,我创建了一个新的 makefile make\Makefile.x64Linux2.6gcc4.4.5。这是从现有的 中派生的Makefile.i86Linux2.6gcc4.4.5,但-m32删除了标志,RTI_64BIT添加了一个定义,并且架构名称与已安装的 DDS 版本的 64 位架构的名称相匹配(x64Linux2.6gcc4.4.5)。

make\Makefile.common必须进行调整以使其正常工作。在该文件中,pkg-config在某些似乎相关的地方需要更正 和 的编译器和链接器glib-2.0选项gstreamer-0.10

我不确定其中哪一个确实导致了您的问题,也许您可​​以尝试我放入 pastebin.com 的文件,看看它们是否适合您。

顺便说一句,看起来粘贴到 pastebin 的 makefile 的TABs (在行的开头)被空格替换了。这会破坏你的制作过程,所以你必须手动更正它——抱歉,我不知道有什么办法。

于 2014-03-03T16:25:01.463 回答