Собираю ffmpeg, мне нужно, чтобы библиотеки кодеков в него вкомпилировались статически. Для некоторых кодеков у меня доступны только .a-библиотеки, для некоторых и .so и .a - насколько я понял, при обычном вызове gcc в первом случае он подхватит статическую .a-библиотеку, при наличии выбора - из .so и .a он выберет .so.
Нашел опцию -static - вроде оно и судя по логам configure, он пытается подхватить статические библиотеки вместо динамических, но вылезла другая проблема - gcc совсем отказался от динамической линковки. Это вылелось в то, что некоторые статические библиотеки не подлючаются с ошибкой «undefined reference to `acosf'», хотя -lm в командной строке указана - просто в системе нет статической версии libm.a, а есть только динамическая libm.so.
На тестовом файле:
> gcc -lm test.cc
все ок
> gcc -static -lm test.cc
/tmp/cchTDfOq.o: In function `main':
test.cc:(.text+0xd): undefined reference to `acosf'
collect2: ld returned 1 exit status
-lm test.cc
/tmp/cchTDfOq.o: In function `main':
test.cc:(.text+0xd): undefined reference to `acosf'
collect2: ld returned 1 exit status
Можно как-нибудь сделать, чтобы при опции -static персонально -lm линковать динамически, или указать более мягкую преференцию - если доступна статическая библиотека - использовать ее, если только динамическая - использовать динамическую?