#pragma comment (lib, "xxx.lib" ) эквивалент Linux?
У меня есть файл статической библиотеки с именем libunp.a
, я знаю, что я мог бы использовать gcc -lunp xx
для ссылки на библиотеку.
Я мог бы использовать #pragma comment(lib,"xxx.lib")
, чтобы сообщить компилятору Microsoft C/С++ о включении библиотеки; как я могу это сделать в Linux/GCC?
Ответы
Ответ 1
Простой; вы не можете. GCC не имеет такого эквивалента. Укажите -l как параметр gcc, создайте компоновщик script, вызовите ld
, вызовите 911 или что-то еще.
Не то, чтобы такая прагма даже имела смысл. Библиотеки должны быть указаны на этапе связывания. Такая информация просто не принадлежит внутри единицы перевода. Блок перевода может быть предварительно обработан, скомпилирован и собран даже без стадии связывания. Инструментальная привязка, используемая Visual Studio, позволяет это, потому что это braindead и всегда выполняет привязку.
Возможно, вы захотите сохранить себе утомительную типизацию и создать MakeFile для своего проекта: GNU Make Manual
Ответ 2
Библиотеки должны быть указаны на этапе связывания. Такая информация просто не входит в единицу перевода. Блок перевода может быть предварительно обработан, скомпилированы и собраны даже без стадии связывания.
Просто потому, что #pragma comment(lib,"xxx.lib")
находится в исходном файле, это не значит, что компилятор его использует. Фактически, это идет как комментарий и впоследствии используется компоновщиком. Не сильно отличается от * nix.
Ответ 3
Кажется, что никаких упоминаний о каких-либо эквивалентных прагмах в странице руководства GCC в прагмах.
Одна из причин, по которой я видел, что GCC не поддерживает ссылку в исходном коде, заключалась в том, что иногда правильная привязка зависит от порядка ссылок; и это потребует от вас убедиться, что порядок связывания происходит правильно, независимо от порядка компиляции. Если вы собираетесь пойти на эту работу, вы можете просто передать аргументы компоновщика в командной строке (или иначе), я полагаю.