c++ - studio - cómo recompilar con-fPIC
genymotion (4)
Antes de compilar, asegúrese de que el archivo "rules.mk" esté incluido correctamente en Makefile o explíquelo de la siguiente manera:
"source rules.mk"
Estaba intentando reinstalar mi ffmpeg, siguiendo esta guide , en mi máquina ARM Ubuntu. Desafortunadamente, cuando compilo un programa que usa esta lib, obtengo el siguiente error:
/usr/bin/ld: /usr/local/lib/libavcodec.a(amrnbdec.o): relocation R_ARM_MOVW_ABS_NC against `a local symbol'' can not be used when making a shared object; recompile with -fPIC
/usr/local/lib/libavcodec.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
Ahora me gustaría volver a compilarlo con -fPIC, como sugiere el compilador, pero no tengo idea de cómo. Cualquier ayuda es apreciada.
Después del paso de configuración, es probable que tenga un archivo MAKE. Dentro de este aspecto de makefile para CFLAGS (o similar). puf -fPIC al final y ejecutar make nuevamente. En otras palabras, fPIC es una opción del compilador que se debe pasar al compilador en algún lugar.
Eche un vistazo a esta página.
Puede intentar agregar la bandera usando: export CXXFLAGS="$CXXFLAGS -fPIC"
en resumen, el error significa que no puede usar una biblioteca estática para vincularla con una dinámica . La forma correcta es tener un libavcodec compilado en .so en lugar de .a, por lo que la otra biblioteca .so que está tratando de compilar se vinculará bien.
la forma más rápida de hacerlo es agregar --enable-shared
at ./configure
options. o incluso puede intentar deshabilitar bibliotecas compartidas (o estáticas) ... ¡usted elige lo que es adecuado para usted!