En CentOS 5.4, OpenSSL compila bien sin ‘compartida’ opción. Pero cuando me pasa que la opción de la compilación falla con:

/usr/bin/ld: libcrypto.un(x86_64-gcc.o): reubicación R_X86_64_32 contra `un símbolo local de la’ no pueden ser utilizados en la fabricación de un objeto compartido; compilar con la opción-fPIC

Cuando intento: ./config shared CFLAGS=-fPIC que no funciona.

¿Qué puedo hacer para conseguir OpenSSL para compilar con el ‘compartida’ opción?

Gracias

  • ¿»Make clean» entre correr sin compartido y ejecutarlo con un compartida? Lo OpenSSL versión es esta?

4 Comentarios

  1. 27

    Mismo problema, PERO por lo general los Makefiles tendrá en cuenta las variables de entorno para el compilador o las opciones del vinculador.

    Por lo tanto, si usted coloca el -fPIC opción antes de llamar el script de configuración, se debe cuidar de él. Usted puede hacerlo con:

    CFLAGS=-fPIC ./config shared --prefix=/your/path
    

    o

    export CFLAGS=-fPIC
    ./config shared --prefix=/your/path
    

    Que trabajó para mí.

    • +1 Encontrados hoy en una totalmente diferente del proyecto, y puede confirmar esto funciona a la perfección. Sólo recuerde make clean si ya has probado edificio sin esta línea de comandos correcta!
  2. 18

    Hay una opción -fXXX que puede pasar a config así que usted puede hacerlo con:

    ./config -fPIC shared
    
    • Asegúrese de «make clean», antes de agregar -fPIC si usted ha tratado de un edificio.
    • necesitan un 2KLOC script en Perl para poner juntos un par de opciones de línea de comandos y que ellos aún no pueden obtener el derecho en probablemente el más popular de la plataforma (Linux x64). Estoy seguro de que hay una lección aquí en algún lugar.
    • Sí, se llama usar GNU autoconf como todos los demás!
    • Tenía visión de túnel en que el indicador-fPIC a tomar que yo no era la adición de la parte compartida. En es propio -el clpi no parece hacer nada así que asegúrese de que usted también agregar compartido.
  3. 1

    OpenSSL versión 1.0 (publicado el día de hoy) funciona bien con la opción compartida

    • Bueno todavía tengo el mismo problema con 1.0.0 j
    • Confirmado en Ubuntu 16.04.1 LTS x64 con CMake v2.8: uso de -fPIC shared se queja acerca de libcrypto.a no se construye con -fPIC.
  4. 1

    He aquí cómo he construido OpenSSL con bibliotecas compartidas. Tenga en cuenta que estoy usando un compilador cruzado para especificar las cosas que la mayoría no.

    # hop into the downloads folder
    cd ~/Downloads
    # get the branch of openssl you want
    git clone -b OpenSSL_1_0_2-stable --single-branch https://github.com/openssl/openssl.git
    # make an installation directory
    mkdir openssl-install
    # go into the cloned openssl directory
    cd openssl
    # absolute paths needed for the configure
    # the "-fPIC -mhard-float" are CFLAGS specific to my project
    # the "-shared" is what creates the .so files
    # find your desired configuration with `./Configure LIST`
    ./Configure linux-mips32 --prefix=/home/myusername/Downloads/openssl-install --openssldir=/system/ssl -fPIC -mhard-float -shared
    # run the make file (with my specific compiler)
    make CC=mips-linux-gnu-gcc RANLIB=mips-linux-gnu-ranlib LD=mips-linux-gnu-ld MAKEDEPPROG=mips-linux-gnu-gcc PROCESSOR=MIPS
    
    • lo ndk versión usaste

Dejar respuesta

Please enter your comment!
Please enter your name here