From: Thomas V. S. <th...@ap...> - 2004-12-15 11:43:34
|
Hi, > > And i listed the steps for cross-compilation fro ARM on host x86 and > then copied the necessary files and plugins to the target filesystem. > I am sure i have plugins(mad,lame etc) on target.But It struck up at > generating registry file with proper plugin path on taget.Gst-register > is not able to load the plugins. > Please see the logs below. You haven't replied on the question of how familiar you are with cross- compilation in the first place. I was asking that to try and guess how much you know of what should be done. Not that I'm an expert, but I have done some of it in the past. > CC=arm-linux-gcc AR=arm-linux-ar LD=arm-linux-ld > ./configure --host=arm-linux > LDFLAGS=-/usr/local/scratch/trilok/ws/target/lib > CFLAGS=-I/usr/local/scratch/trilok/ws/target/include > --prefix=/usr/local/fs/ > vishwa && make && make install Correct me if I'm wrong, but your choice of --prefix argument makes me believe you're not that familiar with cross-compilation. AFAIK, typically you have these two steps: a) configure - this is where you choose a prefix that everything will be installed to *on the target platform*. Ie, if you want your binaries *on the target platform* to be dropped in /usr/bin, and the libs in /usr/lib, then you should configure with prefix "/usr". You seem to be configuring to build GStreamer so that GStreamer thinks it will end up in your *staging area*. Also note, unless you have a better reason not to do so, you really do want your plugins to not end up in /lib/gstreamer-0.8, but in /usr/lib/gstreamer-0.8 or /usr/local/lib/gstreamer-0.8. b) install - this is where you override install-time locations so you install your build of GStreamer in your host's staging area. So I would assume that in your case, your staging area is in /usr/local/fs on your host machine, and you would do either: make DESTDIR=/usr/local/fs install or something like make prefix=/usr/local/fs/usr install I would recommend the first, and it ought to work correctly. These are very typical steps in cross-compiling any autotooled project AFAIK. > 3. Copy files (libraries,lib/gstreamer-0.8,binaries) from the > directory > specified in prefix to target filesystem. This step should be handled by the install step above, and NOT done by hand, unless you *really* know what you are doing. > 4.On target export plugin paths > # export GST_PLUGIN_PATH=/lib/gstreamer-0.8:$GST_PLUGIN_PATH Don't even set this variable at all - GStreamer should be correctly built with the right location in it because of fixing your configure step. > > 5.Run "gst-register" on target > > # gst-register > Rebuilding global_registry > (/usr/local/fs/vishwa/var/cache/gstreamer-0.8/registr > y.xml) ... > Rebuilding user_registry (/root/.gstreamer-0.8/registry.xml) ... > Loaded 0 plugins with 0 features. > > 6. This the content of global_registry > > # cat /usr/local/fs/vishwa/var/cache/gstreamer-0.8/registry.xml Is /usr/local/fs directly mounted on your target platform as the root system ? Or do you make a copy ? Since you say you run gst-register on the target, generating this registry file on your host, I assume it is the former. > <?xml version="1.0"?> > <GST-PluginRegistry> > <gst-plugin-paths> > <path>/lib/gstreamer-0.8</path> ^... this is the line you added to GST_PLUGIN_PATH, which as mentioned should be removed. > <path>/usr/local/fs/vishwa/lib/gstreamer-0.8</path> ^... this is the path that got compiled in because of your choice of -- prefix in your original configure, and will be fixed. Thomas Dave/Dina : future TV today ! - http://www.davedina.org/ <-*- thomas (dot) apestaart (dot) org -*-> and it looks so pretty all those tiny bright lights calling my name <-*- thomas (at) apestaart (dot) org -*-> URGent, best radio on the net - 24/7 ! - http://urgent.fm/ |