Как мне связать библиотечный файл в 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).