Интеграция LLRP с QT выдает ошибку "Пропуск несовместимого /path/libltkcpp.a при поиске -lltkcpp"

Я пишу приложение на QT Creator с C++ для чтения RFID-тегов по протоколу LLRP.

Я использую example.cpp, предоставленный на сайте llrp.org, при попытке скомпилировать код выдает следующую ошибку:

:-1: error: /home/project/RFID/lib/libltkcpp.a: Timestamp out of range; substituting 1970-01-01 05:30:00
:-1: error: skipping incompatible /home/project/RFID/lib//libltkcpp.a when searching for -lltkcpp
:-1: error: cannot find -lltkcpp
:-1: error: skipping incompatible /home/project/RFID/lib//libxml2.a when searching for -lxml2
:-1: error: collect2: error: ld returned 1 exit status

Я добавил библиотеки - libltkcpp.a, libltkcpp_r.lib, libxml2.a в мой проект. Тем не менее проблемы идут. Есть идеи, что здесь происходит не так?

Среда разработки - 64-битная CentOS.

1 ответ

Решение

Прежде всего, вам нужен профессиональный файл, который выглядит следующим образом:

CONFIG -= qt
CONFIG -= app_bundle

SOURCES += \
    /some-path-to-the-example/example1.cpp

LIBS += -L/some-path-to-the-libraries -lltkcpp -lxml2
INCLUDEPATH  += /some-path-to-the-library-headers

Затем либо создайте новый Qt Creator Kit, в котором вы используете linux-g++-32 в качестве Qt mkspec, и сконфигурируйте проект для его использования;

или, в качестве альтернативы, используйте существующий комплект, но добавьте -spec linux-g++-32 в качестве дополнительного аргумента qmake, в проекте Build Steps.

Запустите qmake, rebuild, и проблемы с компоновщиком исчезнут.

Тем не менее, вы можете столкнуться с некоторыми жалобами компилятора на отсутствие заголовков, и в этом случае вам, скорее всего, понадобится установить 32-битные библиотеки разработки.

На Ubuntu задача выполнена установка gcc-7-multilib и g++-7-multilib пакеты.

Про CentOS я точно не знаю. Я надеюсь, что эта статья о красной шапке поможет вам.

Другие вопросы по тегам