Я пытаюсь связать статически созданную библиотеку .a
с другим фрагментом кода C.Символы статической библиотеки, отсутствующие в связанном исполняемом файле
Однако в последнем исполняемом файле несколько символов (имена функций) считаются отсутствующими, если они видны с помощью команды nm
. Это связано с тем, что компоновщик (gcc
) вызывается символами, на которые не ссылается другой фрагмент кода C
, который связан с библиотекой. Символ функции, который я пытаюсь найти с помощью команды nm
, отображается в библиотеке .a
.
Как я могу заставить компоновщик не стирать символы, опущенные таким образом?
На самом деле, если я правильно помню, с компилятором Borland (думаю, это было 3.1 и 5.5), он жалуется на использование (было это?) Printf и связывание с плавающими точками, потому что нет никакого толчка в коде, чтобы заставить ссылку работа и обходной путь заключались в том, чтобы включить фиктивную функцию, которая ссылается на float ..может кто-то поддержать меня на этом? – t0mm13b
Вы уверены? Обычно я использую -g и -O2, чтобы иметь отладочные символы даже в модуле выпуска. Это приводит к оптимизации модуля выпуска, но даже к символам, которые делают «основной файл» читаемым и полезным для последующей отладки. Я имею в виду: я не думаю, что они взаимоисключающие (я использую эти флаги годами ...), но я согласен, что это может быть расточительно, если не требуется. –