Это цитата из книги по программированию в 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
?