OpenMandriva: Mageia (Mageia 9) 20/Agosto/2023 - Anuncio, Descargas.
Blogdrake recomienda descargar las imágenes de instalación (iso) vía torrent para evitar corrupción de datos, aprovechar mejor su ancho de banda y mejorar la difusión de las distribuciones.
fallo en make -> recompile with -fPIC
Hola,
Estoy intentando instalar un stemmer (http://code.google.com/p/php-stemmer/source/checkout) y tengo el siguiente fallo en el último make de la instalación (http://php-stemmer.googlecode.com/svn/wiki/Installation.wiki):
/usr/bin/ld: /home/usuario/public_html/phirehose/example/php-stemmer-0.7.0/libstemmer_c/libstemmer.a(libstemmer.o): relocation R_X86_64_32 against `.data' can not be used when making a shared object; recompile with -fPIC
/home/usuario/public_html/phirehose/example/php-stemmer-0.7.0/libstemmer_c/libstemmer.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
make: *** [stemmer.la] Error 1
He buscado por ahí y he encontrado esto, donde explica porque falla http://www.gentoo.org/proj/en/base/amd64/howtos/index.xml?part=1&chap=3 pero no se bien donde agregar los FLAGS y luego también he encontrado esta otra solución, pero tampoco se donde aplicarla: http://www.cmake.org/pipermail/cmake/2007-May/014350.html
Alguien que me guie un poco?
Un saludo,
ATL
BOFH
# 119199 Se lo pones al configure (si
Nos ha pasado con el repode BDK y algun programa.Se arregla asi con la flag -fPIC
Se lo pones al configure (si tiene), sino al qmake o lo que lleve.
Un Saludo
Muy Suyo
Her DoctorBOFH
Usuario
# 119204 sorry
Sorry por la ignorancia,
Pero como? eso es lo que había supuesto, pero no se ni donde añadir la flag ni como. Había probado en el make, y no se hacerlo bien me fallaba, y en el confign no se como ponera tampoco.
Gracias por la respuesta, esque me estoy iniciando en esto y se me escapan conceptos báscios aun.
Un saludo,
Álvaro
-Para ser feliz solo hay que querer serlo-
BOFH
# 119206 Pues asi ./configure -fPIC Y
Pues asi
./configure -fPIC
Y ya está.
Un Saludo
Muy Suyo
Her DoctorBOFH
Usuario
# 119208 me da fallo
Eso si lo había probado, pero me daba fallo
[usuario@localhost php-stemmer-0.7.0]$ ./configure -fPIC
configure: error: unrecognized option: `-fPIC'
Try `./configure --help' for more information
-Para ser feliz solo hay que querer serlo-
BOFH
# 119211 Postea el resultado de
Postea el resultado de configure --help
Muy Suyo
Her DoctorBOFH
Usuario
# 119212 ahí va
Por ahí parece que sale algo de PIC, aunque por defecto es both.
[usuario@localhost php-stemmer-0.7.0]$ ./configure --help
`configure' configures this package to adapt to many kinds of systems.
Usage: ./configure [OPTION]... [VAR=VALUE]...
To assign environment variables (e.g., CC, CFLAGS...), specify them as
VAR=VALUE. See below for descriptions of some of the useful variables.
Defaults for the options are specified in brackets.
Configuration:
-h, --help display this help and exit
--help=short display options specific to this package
--help=recursive display the short help of all the included packages
-V, --version display version information and exit
-q, --quiet, --silent do not print `checking ...' messages
--cache-file=FILE cache test results in FILE [disabled]
-C, --config-cache alias for `--cache-file=config.cache'
-n, --no-create do not create output files
--srcdir=DIR find the sources in DIR [configure dir or `..']
Installation directories:
--prefix=PREFIX install architecture-independent files in PREFIX
[/usr/local]
--exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
[PREFIX]
By default, `make install' will install all the files in
`/usr/local/bin', `/usr/local/lib' etc. You can specify
an installation prefix other than `/usr/local' using `--prefix',
for instance `--prefix=$HOME'.
For better control, use the options below.
Fine tuning of the installation directories:
--bindir=DIR user executables [EPREFIX/bin]
--sbindir=DIR system admin executables [EPREFIX/sbin]
--libexecdir=DIR program executables [EPREFIX/libexec]
--sysconfdir=DIR read-only single-machine data [PREFIX/etc]
--sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
--localstatedir=DIR modifiable single-machine data [PREFIX/var]
--libdir=DIR object code libraries [EPREFIX/lib]
--includedir=DIR C header files [PREFIX/include]
--oldincludedir=DIR C header files for non-gcc [/usr/include]
--datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
--datadir=DIR read-only architecture-independent data [DATAROOTDIR]
--infodir=DIR info documentation [DATAROOTDIR/info]
--localedir=DIR locale-dependent data [DATAROOTDIR/locale]
--mandir=DIR man documentation [DATAROOTDIR/man]
--docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE]
--htmldir=DIR html documentation [DOCDIR]
--dvidir=DIR dvi documentation [DOCDIR]
--pdfdir=DIR pdf documentation [DOCDIR]
--psdir=DIR ps documentation [DOCDIR]
System types:
--build=BUILD configure for building on BUILD [guessed]
--host=HOST cross-compile to build programs to run on HOST [BUILD]
--target=TARGET configure for building compilers for TARGET [HOST]
Optional Features:
--disable-option-checking ignore unrecognized --enable/--with options
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
--enable-stemmer Enable stemmer support
--enable-shared[=PKGS] build shared libraries [default=yes]
--enable-static[=PKGS] build static libraries [default=yes]
--enable-fast-install[=PKGS]
optimize for fast installation [default=yes]
--disable-libtool-lock avoid locking (might break parallel builds)
Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
--with-libdir=NAME Look for libraries in .../NAME rather than .../lib
--with-php-config=PATH Path to php-config php-config
--with-pic try to use only PIC/non-PIC objects [default=use
both]
--with-gnu-ld assume the C compiler uses GNU ld [default=no]
--with-sysroot=DIR Search for dependent libraries within DIR
(or the compiler's sysroot if not specified).
Some influential environment variables:
CC C compiler command
CFLAGS C compiler flags
LDFLAGS linker flags, e.g. -L
if you have libraries in a
nonstandard directory
LIBS libraries to pass to the linker, e.g. -l
CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if
you have headers in a nonstandard directory
CPP C preprocessor
Use these variables to override the choices made by `configure' or to help
it to find libraries and programs with nonstandard names/locations.
Report bugs to the package provider.
-Para ser feliz solo hay que querer serlo-
BOFH
# 119219 ¿y si lo pones en el make que
¿y si lo pones en el make que fallo daba?
make -fPIC
Muy Suyo
Her DoctorBOFH
# 119220 Se pone en el makefile
en donde definan la variable
CFLAGS
¿lo usas?, ¿la lees?, ¿las conoces?,Herramienta útil
BOFH
# 119228 Me parece que el paquete que
Me parece que el paquete que daba este fallo era picprog pero ya no lo recuerdo. Allí en el spec se puede ver como lo solucioné.
No estoy seguro si era picprog o otro programa. Ya ni me acuerdo.
Pero lo hice sin tocar los makefiles.Solo pasandole al configure o al make la flag.A lo mejor no es exactamente -fPIC sino
CFLAG 'algo' o algo similar.
A ver si tengo un rato y lo busco.Pero esto ha pasado compilando programas para mageia2.
Un SAludo
Muy Suyo
Her DoctorBOFH
BOFH
# 119236 pues no es picprog xD Que
pues no es picprog xD
Que memoria, el caso que no lo encuentro.A lo mejor incluso lo hice como dice Kat, modificando el makefile.Lo siento no me acuerdo ni que hice ni cuando lo hice.
Pero ese error lo he visto hace poco, es lo unico que se con seguridad.
Busca en el makefile y pasale la opcion desde alli.tal y como dicen aqui http://www.gentoo.org/proj/en/base/amd64/howtos/index.xml?part=1&chap=3
Busca el gcc que trate este fichero y le plantas el -fPIC .
Cualquier duda pregunta
Muy Suyo
Her DoctorBOFH
Usuario
# 119269 atl
Perdón que halla estado desconectado, gracias por la respuesta, cuando tenga tiempo lo pruebo y os comento para si le pasa a alguien más, esque he estado liado con otra consulta que también tengo por el foro, que voy a aclarar como acabo de solucionarla :)
-Para ser feliz solo hay que querer serlo-
Usuario
# 119296 Hola
Te digo lo que tienes que hacer, acabo de probarlo y sale.
En la carpeta donde compilas (que es en la que esta el fichero configure) te creas un fichero de texto con el nombre que quieras (sin extensión), por ejemplo le llamas compilar, copia dentro del fichero esto:
export CFLAGS="-fPIC"
export CXXFLAGS=$CFLAGS
export CPPCLAGS=$CFLAGS
./configure --prefix=/usr
make
Lo guardas, luego al fichero le das permisos de ejecución, lo puedes hacer desde la terminal con
chmod +x compilar
Ahora lo ejecutas con
./compilar
Si todo ha ido bien ya sólo queda hacer como root
make install
Para exportar opciones de configuración de compilación lo que hay que hacer es hacer todos los pasos de compilación desde un fichero, para evitar errores no muy entendibles.
Ya tantas y tantas compilaciones para paquetes Deb (Debian-Ubuntu) y RPM (Mandriva, Fedora, Suse) ha hecho que pensara en esta forma de hacerlo.
Espero haberte sido de ayuda.
Saludos
Linux Music 3.0
Usuario
# 119707 Hola
Por fin puedo probar esto!, pero no me ha funcionado, tengo que substituir todos los pasos o ahorrarme alguno? después de probar a hacer lo mismo pero con la solución que me has dado, cuando he conseguido que no me salga error del fpic me ha salido este:
/bin/sh /home/user/Descargas/php-stemmer-0.7.0/libtool --mode=link cc -DPHP_ATOM_INC -I/home/user/Descargas/php-stemmer-0.7.0/include -I/home/user/Descargas/php-stemmer-0.7.0/main -I/home/user/Descargas/php-stemmer-0.7.0 -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/include/php/ext/date/lib -DHAVE_CONFIG_H -fPIC -o stemmer.la -export-dynamic -avoid-version -prefer-pic -module -rpath /home/user/Descargas/php-stemmer-0.7.0/modules stemmer.lo -Wl,-rpath,/home/user/Descargas/php-stemmer-0.7.0/libstemmer_c -L/home/user/Descargas/php-stemmer-0.7.0/libstemmer_c -lstemmer
libtool: link: cc -shared -fPIC -DPIC .libs/stemmer.o -L/home/user/Descargas/php-stemmer-0.7.0/libstemmer_c -lstemmer -Wl,-rpath -Wl,/home/user/Descargas/php-stemmer-0.7.0/libstemmer_c -Wl,-soname -Wl,stemmer.so -o .libs/stemmer.so
/usr/bin/ld: cannot find -lstemmer
collect2: ld returned 1 exit status
make: *** [stemmer.la] Error 1
-Para ser feliz solo hay que querer serlo-
Usuario
# 119708 Tienes que instalar
Tienes que instalar stemmer-dev, y si ya lo tienes instalado, instalar una versión más reciente
Linux Music 3.0
Usuario
# 119778 Hecho
Hola,
Solucionado! me faltaba ese último paquete y con el script anterior solucioné lo de las flags! muchas gracias, ya se puede cerrar este hilo =D
Un saludo!
-Para ser feliz solo hay que querer serlo-