How to execute dynamically linked binaries on IXP2400: a hack ============================================================= Version 1.1 / 2003-05-15 David MENTRE 0. Prerequisites I suppose you have a cross gcc (target arm-linux) for your IXP2400 somewhere. You'll find a howto on to make one at: http://www.linux-france.org/~dmentre/doc/en/ We suppose that this cross gcc is in $XGCC in the rest of this document. 1. Purpose of this document Execute a dynamically linked binary compiled with the above mentionned cross gcc on Intel IXDP2400 platform. With this cross tool chain, executing the shared binary gives the error: "error while loading shared libraries: ./hello: symbol __register_frame_info, version GLIBC_2.0 not defined in file libc.so.6 with link time reference" The purpose of this hack is to define the missing symbols. This hack was found on the web. 2. create the missing symbols in a shared library * copy/paste the following C program as libfix.c: --begin libfix.c-- void __register_frame_info(void) {} void __deregister_frame_info(void) {} void __unregister_frame_info(void) {} --end libfix.c-- * compile it: $XGCC/bin/arm-linux-gcc -mbig-endian -shared -o libfix.so libfix.c 3. setup the needed environment * copy libfix.so in /lib on the target system * copy $XGCC/arm-linux/lib/libgcc_s.so.1 in /lib on the target system * at a shell prompt, do: export LD_PRELOAD="/lib/libfix.so" After that, you should be still able to do an 'ls'. 4. final notes * test on your own shared binaries * you should fix your ramdisk: - put libfix.so and libgcc_s.so.1 in /lib - add a file /etc/ld.so.preload with the following content --begin /etc/ld.so.preload-- /lib/libfix.so --end /etc/ld.so.preload--