Поставьте библиотеку и не добавляйте lib*.a
Я думаю, что видел, как это сделать где-то, но не могу переосмыслить это. Пример:
gcc -Ldir -lfoo
Я хочу, чтобы компоновщик искал dir / foo, а не dir / libfoo.a без необходимости писать dir / foo (в dir много файлов, и запуск ar сначала неуклюже).
РЕДАКТИРОВАТЬ: руководство sais
Добавить каталог dir в список каталогов для поиска -l
а также
Единственная разница между использованием параметра -l и указанием имени файла заключается в том, что -l окружает библиотеку "lib" и ".a" и ищет несколько каталогов.
Я хочу, чтобы поиск поведения в каталогах, заданных -L, не прерывал имя файла. Это возможно.
РЕДАКТИРОВАТЬ 2:
В руководстве по ld я обнаружил, что -l:foo делает именно то, что я хочу, и это происходит в gcc. Это поведение официально поддерживается?
1 ответ
От ld
справочная страница:
-l namespec
--library=namespec
Add the archive or object file specified by namespec to the list of
files to link. This option may be used any number of times. If
namespec is of the form :filename, ld will search the library path
for a file called filename, otherwise it will search the library
path for a file called libnamespec.a.
On systems which support shared libraries, ld may also search for
files other than libnamespec.a. Specifically, on ELF and SunOS
systems, ld will search a directory for a library called
libnamespec.so before searching for one called libnamespec.a. (By
convention, a ".so" extension indicates a shared library.) Note
that this behavior does not apply to :filename, which always
specifies a file called filename.
Так что используйте -l:foo
,