Как исключить с помощью GPRbuild некоторые функции?

У меня есть исполняемый файл в Ada, скомпилированный с gprbuild. Исполняемый файл использует некоторую простую функцию (например, sin e cos). Этот исполняемый файл работает в приложении, привязанном к POS (Partition Operating System), разработанной с помощью vxwork. После перекомпиляции всего процесса появляется множество ошибок объявления функций между POS_API.o и исполняемым файлом ada (hello.o) . Эти функции (sin, cos, ...) находятся в одной библиотеке. К сожалению, самое простое решение для отмены ссылки на всю эту функцию в POS не разрешено (ограничение дизайна). Есть предложения о том, как скомпилировать или продолжить? Это какая-либо возможность компилировать без определенной библиотеки или какой-либо функции, чтобы избежать многократной ошибки ссылки?

1 ответ

Боюсь, на самом деле это не ответ: во многом потому, что прошло более десяти лет с тех пор, как я работал с VxWorks и Ada, и все стало немного туманно. Кроме того, это немного долго для комментария на ваш вопрос

Как я уже использовал, VxWorks поставляется с целым набором программного обеспечения, которое вы конфигурируете для хранения именно тех компонентов, которые вам нужны, в вашем ядре: в этом случае это, вероятно, будет включать пакет математики, такие функции sin(), а также функции ОС, такие как taskSpawn(),

Процесс сборки Ada/VxWorks, который мы использовали, генерирует частично связанный объектный файл со ссылками на sin(), taskSpawn() неразрешенный (я не могу вспомнить, как это достигается; при использовании GNU ldможет быть -r или же --relocatable переключатель?). Когда VxWorks загружает этот объектный файл через сконфигурированное ядро, неразрешенные ссылки разрешаются, и мы уходим.

Теперь я не знаю, что делает ваш POS_API. Это скин поверх сконфигурированного ядра VxWorks? Загружается ли ваша программа Ада сама? Если это сама программа VxWorks, то почему она экспортирует sin()?

Я подозреваю, что проблема связана с тем, как вы связали свой исполняемый файл. Может быть, вы могли бы показать нам свой файл GPR? Иначе я просто насвистываю в темноте.

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