Это цитата из книги по программированию Linux:
% gcc -o app app.o -L. –Ltest
Предположим, что доступны и libtest.a
, и libtest.so
. Тогда компоновщик должен
выберите одну из библиотек, а не другую. Компоновщик просматривает каждый каталог (сначала
те, которые указаны с параметрами -L
, а затем те, которые находятся в стандартных каталогах).
компоновщик находит каталог, содержащий либо libtest.a
, либо libtest.so
, компоновщик останавливается
поиск по каталогам. Если в каталоге присутствует только один из двух вариантов, компоновщик
выбирает тот вариант. В противном случае компоновщик выбирает версию разделяемой библиотеки, если только
вы явно указываете ему иное. Вы можете использовать параметр -static
, чтобы потребовать статический
архивы. Например, в следующей строке будет использоваться архив libtest.a
, даже если
libtest.so
также доступна разделяемая библиотека:
% gcc -static -o app app.o -L. –Ltest
Поскольку, если компоновщик обнаруживает каталог, содержащий libtest.a
, он прекращает поиск и использует эту статическую библиотеку, как заставить компоновщик искать только совместно используемую библиотеку, а не статическую?
% gcc -o app app.o -L. libtest.so
?