Устранение ошибок во время компиляции - PullRequest
0 голосов
/ 08 января 2010

Я пытаюсь статически связать файл libcrypto.a (из библиотеки openssl) после сборки его из исходного кода с помощью новой цепочки инструментов. Однако всякий раз, когда я пытаюсь использовать какие-либо функции из этой библиотеки, я получаю ошибки «неопределенная ссылка». Я убедился, что правильный заголовочный файл был включен. Я также дважды проверил таблицу символов libcrypto.a и убедился, что эти функции действительно определены.

Есть ли что-нибудь еще, что я могу сделать для отладки этой ошибки - например, получить больше информации из компоновщика или исследовать сам libcrypto.a, чтобы выяснить, почему компоновщик выдает ошибку «неопределенная ссылка», когда появляются обозначенные символы в таблице символов?

Ответы [ 3 ]

1 голос
/ 08 января 2010

извлекает символ из libcrypto, используя nm

так что вы можете увидеть, если это там - вероятно, нет (дух)

У ssl есть 2 библиотеки, возможно, вы используете не ту

что такое пропавший символ

1 голос
/ 08 января 2010

Неопределенная ссылка / символ - это ошибка компоновщика, указывающая на то, что компоновщик не может найти указанный символ ни в одном из объектных модулей, которые связаны. Это указывает на одно или несколько из следующих действий:

  1. Указанный класс / метод / функция / переменная / что-либо еще не определено в проекте.
  2. Символ недоступен, возможно, из-за спецификатора доступа (в C ++ не относится к ANSI C)
  3. Ссылка неверна. Это может быть связано с орфографической ошибкой или подобной проблемой. (Маловероятно)
  4. Вы забыли включить нужную библиотеку в скрипт сборки при вызове компоновщика.
1 голос
/ 08 января 2010

Я вижу, ваше сообщение помечено c++ OpenSSL написан на C.

Вы не забыли сделать

extern "C" {
#include <various SSL files>
}

...