You have a linkage error, not a compilation error. You haven't run into a bug,
you have just attempted a linkage that cannot work.
You are trying to build a shared library libscy_av.so
. All the object
files that are linked in a shared library must consist of Position Independent
Code. To generate
such an object file with gcc, you compile with the option -fPIC
.
The linker discovers that your shared libary requires the object file
options.o
, which is a member of the static library libswresample.a
. It then
discovers that this options.o
is not PIC, and so cannot be linked in
a shared library. The linkage fails and the linker advises you that
options.o
must be recompiled with the -fPIC
compiler option.
To comply with that advice, you would have to rebuild the static library libswresample.a
from source, with -fPIC
added to the compiler flags.
You might do that, but it is unusual for object files in a static library to
be PIC, and there is an easier option. Your mistake was in linking against
the static version of libswresample
(libswresample.a
) rather than the
shared version (libswresample.so
), which will be PIC. Just correct that mistake. If you install
libswresample.a
from a dev package provided by your package manager, then
it will also provide libswresample.so
. If you have built libswresample
from source, then the build system will also build both.