Читая руководство по gcc, я считаю, что следующие два утверждения верны:
Пути поиска в библиотеке, указанные в командной строке, ищутся перед путями «по умолчанию» (которые, как я предполагаю, означают вещи в переменной среды LIBRARY_PATH)
Совместно используемые библиотеки будут в предпочтении связаны со статическими библиотеками (при отсутствии флагов, говорящих о том, что нужно делать иначе)
Но какой из этих двух доминирует? Например, если я наберу
gcc myprog.cpp -o myprog -Lmypath -lmylibrary
и в mypath есть статическая библиотека «libmylibrary.a», и в каком-то месте, указанном в LIBRARY_PATH, есть общая библиотека «libmylibrary.so», какая из этих библиотек будет использоваться? Я предполагаю, что статическая библиотека будет использоваться (то есть (1) доминирует), но я вижу некоторые забавные ошибки компиляции, которые заставляют меня сомневаться в этом предположении, поэтому я хотел убедиться …
В вашем примере статическая библиотека libmylibrary.a
будет связан в
предпочтение любому libmylibrary.a
или же libmylibrary.so
которые могут
существует в одной из директорий поиска компоновщика по умолчанию. Компоновщик
поиск в mypath
до любого из мест по умолчанию, и как только
он находит libmylibrary.a
или же libmylibrary.so
выглядит не дальше
удовлетворить -lmylibrary
,
Если mypath
содержащиеся и то и другое libmylibrary.a
а также libmylibrary.so
,
последний будет предпочтительным.
Я не уверен, на какой источник вы ссылаетесь в «руководстве по gcc», но
«компоновщик gcc» является компоновщиком GNU, ld
и вы найдете
Значения параметров командной строки очень хорошо объяснены в его руководство