Question

This is my first question here :). I need to compile VideoData in my Archlinux x86_64 system (I can compile it in a Ubuntu 12.04 x86, but it isn't useful for me), but I get some errors from ld.

Here

But the most important part, in my opinion, is this:

/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

These errors in English are

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

I think that is an incompatibility with 32bit libraries, but I can't solve it. I have installed all this

[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)

I have gcc-multilib, too. I don't know what can I do... Any help, please? :)

Thank you very much! And sorry for my English :)

Regards!

Was it helpful?

Solution

I had the same problem as you, but after some modifications to the Makefile I was able to cross-compile the application in x86_64 Arch Linux for 32 bits. Here is the makefile.

Basically i have to make two changes:

  1. Modify the -L flag in the linking phase to point to /usr/lib32 instead of /usr/lib
  2. Add the library -lgobject-2.0 to the LIBS variable.

After these two changes, you should be able to build the VideoData demo for 32 bits. The errors were caused because the multilib layout in ArchLinux is different from CentOs

Please note that if you want to run the 32bit VideoData demo in x86_64 you also need to install the 32 version of some Gstreamer plugins. Some of these plugins are not available in the multilib repository so you have to build them by yourself. An alternative might be to create a 32bit chrooted environment.

OTHER TIPS

After the fact, you explained me that cross compilation to 32 bits is needed. So my answer does not exactly address your question. I will leave it here anyway since it contains useful information for building the example on a 64 bits machine.


I ran into issues as well trying to build this on CentOS 6.5, 64 bits.

To work around those, I created a new makefile make\Makefile.x64Linux2.6gcc4.4.5. This was derived from the existing Makefile.i86Linux2.6gcc4.4.5, but with the -m32 flags removed, a define for RTI_64BIT added and the architecture name matched with the name of the 64bits architecture of the installed DDS version (x64Linux2.6gcc4.4.5).

Also make\Makefile.common had to be adjusted to get it to work. In that file, pkg-config was needed in some places where it seemed relevant, to correct the compiler and linker options for glib-2.0 and gstreamer-0.10.

I am not sure which of these exactly caused your problem, maybe you could try the file that I put in pastebin.com and see if they work for you.

By the way, it looks like the makefiles pasted into pastebin have their TABs (in the beginnings of the lines) replaced by spaces. That will ruin your make process, so you have to manually correct that -- sorry, I do not know any way around that.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top