Как я могу отладить функции библиотеки GNU C, такие как mq_open возвращает ошибку при вызове? - PullRequest
0 голосов
/ 22 мая 2019

У меня следующая проблема: я портировал коммерческий ведомый стек Modbus для Linux в моем Qt5.9.6 с помощью ARM Cross-Toolchain в виртуальной машине Ubuntu 16.04. Ведомый стек Modbus имеет чистый исходный код на C и в основном обращается к библиотекам GNU C. Теперь у меня проблема в том, что Modbus не работает должным образом на целевой платформе Yocto Rocko Linux. Но уже в QtCreator в Ubuntu библиотеки GNU C неправильно интерпретируются редактором кода, а некоторые функции подчеркнуты красным.

Например, для ведомого стека Modbus важна функция mq_open из библиотеки mqueue.h, но функцию mq_open нельзя открыть в редакторе кода и в заголовке mqueue.h, эта функция mq_open подчеркнута красным в объявлении с помощью сообщение об ошибке: ожидание объявления.

Поэтому мой вопрос: как библиотеки GNU C в Linux могут правильно интерпретироваться и компилироваться компилятором, чтобы стек Modbus снова работал? Стек Modbus работал с Qt4.72 на платформе ptx-Linux.

Функция mq_open в файле возвращает ошибку mqd_t -1.

К сожалению, исходный файл GNU C моей виртуальной машины Ubuntu не согласован с остальной системой. Когда я открываю заголовок mqueue.h, объявление функции является неполным в соответствии с моим редактором кода (QtCreator Linux с ARM Cross-Toolchain), потому что оно предоставляется с THROW и для этой функции или для моей версии для функций mqueue не реализовано никаких исключений. , Я решил эту проблему, заменив оператор __THROW на __attribute ((nothrow __LEAF)), который по крайней мере исправил ошибку «Ожидается объявление» в редакторе кода.

Есть ли у вас какие-либо советы о том, как решить эту проблему без особых проблем с библиотеками GNU C?

Заранее спасибо за ответы.

...