Tengo ELDK-3.1 instalado en una caja Ubuntu que funciona perfectamente.ELDK error del enlazador gcc en ld.so.1
En otra máquina, ejecutando 64 bits OpenSuse 12.1, cloné la instalación de ELDK y, durante un tiempo, funcionó muy bien.
Ahora, cuando intento configurar mis proyectos ver:
configure: error: C compiler cannot create executables
See `config.log' for more details
Y el registro de muestra:
configure:3411: ppc-linux-gcc conftest.c >&5
/opt/ELDK-3.1/usr/bin/../lib/gcc-lib/ppc-linux/3.3.3/../../../../ppc-linux/bin/ld: warning: ld.so.1, needed by /opt/ELDK-3.1//usr/../ppc_8xx/lib/libc.so.6, not found (try using -rpath or -rpath-link)
/opt/ELDK-3.1//usr/../ppc_8xx/lib/libc.so.6: undefined reference to `[email protected]_PRIVATE'
...
El archivo ld.so.1
está en el mismo directorio que libc.so.6
.
s -l /opt/ELDK-3.1//usr/../ppc_8xx/lib/ld.so.1
lrwxrwxrwx 1 root root 11 Jan 31 11:43 /opt/ELDK-3.1//usr/../ppc_8xx/lib/ld.so.1 -> ld-2.3.1.so
Por lo que yo puedo ver, estoy definiendo correctamente todo el ambiente necesario y tratando de construir utilizando exactamente el mismo sistema de construcción como en el cuadro de Ubuntu (el proyecto está "automaked").
Así que escribió un guión que intenta imitar todo lo que mi automaked configure
hace:
#!/bin/bash
if [ ! -f confdefs.c ]; then
cat > confdefs.c << EOF
/* confdefs.h */
#define PACKAGE_NAME "xyz"
#define PACKAGE_TARNAME "xyz"
#define PACKAGE_VERSION "1.00"
#define PACKAGE_STRING "xyz 1.00"
#define PACKAGE_BUGREPORT "<[email protected]>"
#define PACKAGE_URL ""
#define PACKAGE "xyz"
#define VERSION "1.00"
/* end confdefs.h. */
int
main()
{
;
return 0;
}
EOF
fi
ARCH=powerpc
export CROSS_COMPILE=ppc_8xx
TOOLCHAIN=ppc-linux-
TOOLCHAIN_ROOT=/opt/ELDK
LD=`which ${TOOLCHAIN}ld`
CC=`which ${TOOLCHAIN}gcc`
GCC=$CC
export CFLAGS="-Wall -g -I${TOOLCHAIN_ROOT}/ppc_8xx/usr/include/"
export CPPFLAGS=$CFLAGS
# export LDFLAGS="-shared"
$CC $CFLAGS $LDFLAGS confdefs.c -o confdefs
Esto me da exactamente el mismo error que configure
.
¡Si descomenta la línea export LDFLAGS="-shared"
, por otro lado, se construye perfectamente !.
> ls -l confdefs
-rwxr-xr-x 1 myself users 16136 Fev 1 09:52 confdefs
> file confdefs
confdefs: ELF 32-bit MSB shared object, PowerPC or cisco 4500, version 1 (SYSV), dynamically linked, not stripped
Podría alguien aquí por favor, dame alguna idea de lo que me falta para que mis proyectos de trabajo finamente en una caja y no en el otro?
Gracias!
Intenta ejecutar automake y autoconf nuevamente en tu proyecto. Por cierto, la extensión .so significa que es un objeto compartido, debe tener "-shared" habilitado para usar correctamente esos objetos compartidos. –
Tiene el mismo error que yo, al cambiar a Fedora 16 x86_64. Hasta ahora hemos encontrado una solución agregando el siguiente enlace simbólico "ld.so.1 -> ../../../ppc_8xx/lib/ld.so.1" a eldk-3.1/usr/ppc-linux/lib Sospecho que algo cambió con el entorno entre F15 y F16. Lo mismo para OpenSUSE (11-> 12). –
Hola, Sergey, por favor, envía una respuesta para que yo pueda elegirla. Su solución alternativa funcionó para mí. Tiene algún sentido ya que los scripts del enlazador apuntan a algo como 'SEARCH_DIR ("/usr/ppc-linux/lib ")', pero todavía no puedo entender por qué funciona en una distribución y no en otra. Supongo que se trata de diferencias en sus paquetes de desarrollo (autotools o algo así). ¡Gracias! – j4x