Как исключить с помощью 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? Иначе я просто насвистываю в темноте.