O que fazer com a mensagem “recompile with -fPIC”

7

Estou tentando configurar o pacote fonte ffmpeg para construir arquivos .so em vez de arquivos .a.

Eu corro make depois de fazer ./configure --enable-shared

Isso me dá a seguinte mensagem:

/usr/bin/ld: libavutil/display.o: relocation R_X86_64_PC32 against undefined symbol 'hypot@@GLIBC_2.2.5' can not be used when making a shared object; recompile with -fPIC

No entanto, não tenho certeza de onde e como adicionar o sinalizador -fPIC.

    
por A1A2A3A4 15.07.2014 / 15:43

3 respostas

1

Eu resolvi o mesmo erro para compilar as fontes do FFMpeg 2.3.3 no Ubuntu 14.04 LTS. Compilei com sucesso o código depois de definir LD_LIBRARY_PATH para /usr/lib/x86_64-linux-gnu e adicionei o marcador -fPIC a --cc Meus comandos de compilação de trabalho estão aqui:

LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu
./configure --prefix=.. --enable-shared --enable-gpl --enable-version3 --enable-runtime-cpudetect --disable-outdev=sdl --disable-opencl --enable-libmp3lame --enable-libx264 --cc="gcc -m64 -fPIC" --extra-cflags="-I../include" --extra-ldflags="-L../lib -ldl"
make -j4
    
por Erol Ozcan 18.09.2014 / 13:59
1

Existe uma opção ./configure que pode ser a maneira mais fácil de resolver o problema:

andrew@ilium~/source/ffmpeg_build/ffmpeg/ffmpeg$ ./configure --help | grep -i pic
--enable-pic             build position-independent code
    
por andrew.46 24.09.2014 / 14:29
0

A realocação R_X86_64_PC32 contra o símbolo indefinido geralmente ocorre quando o LDFLAGS é definido com proteção e o CFLAGS não é definido.
Talvez apenas erro do usuário:
Se você estiver usando -specs = / usr / lib / rpm / redhat / redhat-endurecido-ld no momento do link, você também precisa usar -specs = / usr / lib / rpm / redhat / redhat-endurecido-cc1 em tempo de compilação, e como você está compilando e ligando ao mesmo tempo, você precisa dos dois, ou solte o -specs = / usr / lib / rpm / redhat / redhat-endurecido-ld. Correções comuns:
link
link

    
por Sérgio 26.07.2016 / 03:34