Как мне связать библиотечный файл в GCC, который не начинается с lib?

Когда я связываю библиотеку, такую ​​как libm, с ld, мне нужно удалить префикс lib. Что если файл не соответствует этому соглашению об именах? Есть ли способ связать его, кроме переименования файла?

2 ответа

Решение

Вы можете ссылаться на любую библиотеку, например, foo.a, указав полный путь к нему в строке ссылки:

gcc main.o /path/to/foo.a

То, что вы теряете с нестандартным именем библиотеки, это возможность для компоновщика искать его, например, это не будет работать:

gcc main.o -L/path/to foo.a

Когда я связываю библиотеку, такую ​​как libm, с ld

Обратите внимание, что в целом вы не должны связывать что-либо с ld, Вместо этого используйте драйвер компилятора - он добавляет объекты и библиотеки в строку ссылки, необходимые для правильного результата.

У вас может быть компоновщик для поиска библиотеки без префикса lib:

gcc main.o -L/path/to/foo -l:foo.a

Это особенно полезно в средах, где указывается список библиотек, а позже добавляется флаг -l (например, некоторые make-файлы или eclipse CDT).

Другие вопросы по тегам