Связывание статической библиотеки с gnu g ++, Нет такого файла или каталога - PullRequest
2 голосов
/ 05 июля 2011

Я пишу программное обеспечение, которое зависит от Poco c ++ библиотеки .Я могу собрать библиотеку как в Ubuntu, так и в Windows, но только в статическом режиме.Это нормально, так как я хочу использовать это статически.Однако, когда я пытаюсь скомпилировать программу, которая зависит от библиотек, я получаю ошибку, похожую на эту (свободно переведенную):

Poco/RegularExpression.h: No such file or directory.

Однако, когда я также явно указываю компилятору, где искатьЗаголовочные файлы библиотеки с ключом -I Вместо этого я получаю следующую ошибку (но, может быть, 20-30 похожих строк):

Undefined reference to (pthread_mutex...)

Я пробовал много разных комбинаций, как непосредственно с g ++, так ис помощью make-файлов.Должен ли я включать пути к заголовочным файлам библиотек или мне как-то не удалось правильно скомпилировать библиотеки?Если мне нужно включить пути, как я могу избавиться от ошибки «неопределенная ссылка»?

Я довольно новичок в программировании на С ++, так что терпите меня.Спасибо, Роберт

Ответы [ 2 ]

1 голос
/ 05 июля 2011

Попробуйте вариант -I. В целевом объекте с зависимостью RegularExpression.h попробуйте включить каталог, содержащий указанный выше заголовочный файл, например:

g++ -I/home/.../Poco <other options>

1 голос
/ 05 июля 2011

Это очень распространенная ошибка, я тоже страдаю от этого время от времени.

  • Вы включили .a в свой проект?
  • Как вы включаете заголовки? с <> или ""?
    • Если последнее, убедитесь, что файлы находятся в вашей папке include.
    • Если сначала, убедитесь, что вы добавили путь к файлам или они находятся в глобальной папке включения g ++
  • Библиотека должна быть скомпилирована как .so / .dll?
    • Обычно, если библиотека должна быть динамической, статическая библиотека только указывает на нее.
  • Включили ли вы зависимости, которые необходимы для самого Poco? Как -lpthread я думаю, что вы пропали без вести.
...