Подтвердить что ты не робот

#pragma comment (lib, "xxx.lib" ) эквивалент Linux?

У меня есть файл статической библиотеки с именем libunp.a, я знаю, что я мог бы использовать gcc -lunp xx для ссылки на библиотеку.

Я мог бы использовать #pragma comment(lib,"xxx.lib"), чтобы сообщить компилятору Microsoft C/С++ о включении библиотеки; как я могу это сделать в Linux/GCC?

4b9b3361

Ответ 1

Простой; вы не можете. GCC не имеет такого эквивалента. Укажите -l как параметр gcc, создайте компоновщик script, вызовите ld, вызовите 911 или что-то еще.

Не то, чтобы такая прагма даже имела смысл. Библиотеки должны быть указаны на этапе связывания. Такая информация просто не принадлежит внутри единицы перевода. Блок перевода может быть предварительно обработан, скомпилирован и собран даже без стадии связывания. Инструментальная привязка, используемая Visual Studio, позволяет это, потому что это braindead и всегда выполняет привязку.

Возможно, вы захотите сохранить себе утомительную типизацию и создать MakeFile для своего проекта: GNU Make Manual

Ответ 2

Библиотеки должны быть указаны на этапе связывания. Такая информация просто не входит в единицу перевода. Блок перевода может быть предварительно обработан, скомпилированы и собраны даже без стадии связывания.

Просто потому, что #pragma comment(lib,"xxx.lib") находится в исходном файле, это не значит, что компилятор его использует. Фактически, это идет как комментарий и впоследствии используется компоновщиком. Не сильно отличается от * nix.

Ответ 3

Кажется, что никаких упоминаний о каких-либо эквивалентных прагмах в странице руководства GCC в прагмах.

Одна из причин, по которой я видел, что GCC не поддерживает ссылку в исходном коде, заключалась в том, что иногда правильная привязка зависит от порядка ссылок; и это потребует от вас убедиться, что порядок связывания происходит правильно, независимо от порядка компиляции. Если вы собираетесь пойти на эту работу, вы можете просто передать аргументы компоновщика в командной строке (или иначе), я полагаю.