【发布时间】:2019-07-13 05:21:34
【问题描述】:
我在 Ada 中有一个使用 gprbuild 编译的可执行文件。该可执行文件使用一些简单的功能(如 sin e cos)。该可执行文件在绑定到使用 vxwork 设计的 POS(分区操作系统)的应用程序中运行。重新编译整个过程后,会在 POS_API.o 和 ada 可执行文件 (hello.o) 之间出现一堆多函数声明错误。这些函数(sin、cos、...)都在同一个库中。不幸的是,不允许在 POS 中取消引用所有这些功能的最简单的解决方案(设计界限)。关于如何编译或继续的任何建议? 是否有可能在没有特定库或某些函数的情况下进行编译以避免多重引用错误?
【问题讨论】:
-
有没有关于如何用 C 解决同样问题的 VxWorks 文档?我很惊讶在
.o文件中发现了一个可执行文件,但是我已经很久没有使用VxWorks(5.4)了,那时不可能有这样的事情。也许您需要从您的 Ada 源而不是可执行文件构建一个库。 -
@SimonWright 当我使用 VxWorks 5.1.1、5.4 和 5.5 版本时,有一种方法可以将 .o 加载到内存中并直接从命令行调用自定义 C 函数。我不知道这是否是操作系统自定义构建的产物(我们不得不修改 C 代码,只是为了给我们的系统添加一个硬盘驱动器……所以可能)或其他什么。
-
你在关注this answer吗? (顺便说一句,你没有回应:有用吗?)如果有,我再看看
-
我已经完全执行了上一步。问题是如何修改可执行文件以避免多个引用。包 Linker 中是否有任何属性可用于取消链接双重引用?我已经成功在链接器(gps 环境)中添加了 POS_api.o 并且得到了同样的错误。