注释
[调皮]
一点帮助请……
我看了一下,在我看来,您的组件似乎需要一些额外的 -I 到编译步骤和 -l 参数到链接器步骤。我查看了 halcompile 的源代码,试图弄清楚如何做到这一点,诀窍似乎是两个选项,extra_compile_args 和 extra_link_args 可以添加到 .comp 文件中,例如:option extra_compile_args “-我/usr/include/modbus”;选项 extra_link_args “-lm -lmodbus”;前者应该解决您的问题,包括 <modbus.h>,后者应该解决 round 和 modbus_* 方法的链接问题。不确定 iniFindInt 方法从何而来,因此那里没有库建议。我不清楚如何为基于 .c 的组件激活类似选项,所以我不确定这是否能解决您的问题。无论如何,我怀疑应该在 halcompile(1) 手册页中记录这些内容,但我在其中找不到它们。它们记录在 <URL:http://linuxcnc.org/docs/devel/html/hal/comp.html#_options >。
|
可能有一种方法可以通过 #pragma GCC … 源文件中的行。 但是,从实用的角度(原文如此)您可以在您的系统上查找 Makefile.modinc 并将上面的选项添加到 EXTRA_CFLAGS 行。 |
我创建了一个测试分支(https://github.com/LinuxCNC/linuxcnc/tree/andypugh/halcompile_opts),它允许以下命令行:
这几乎可以工作(不再有 modbus 问题)但是在链接 inifile.h 函数时遇到问题。而且我不知道如何链接它。 |
[安迪普]
凉爽的。tests/ 中的测试用例怎么样?
这几乎可以工作(不再有 modbus 问题)但是在链接 inifile.h 函数时遇到问题。而且我不知道如何链接它。
列出几个 -I 和 -l 条目有什么问题?
|
对于任何人都不太可能使用的东西来说似乎很麻烦……
没问题,我只是没有找到链接 inifile.h 的 -l(如 L |
[安迪普]
> 很酷。tests/ 中的测试用例怎么样?对于任何人都不太可能使用的东西来说似乎很麻烦……
我可以做些什么来减少麻烦吗?我写了 <URL: http://linuxcnc.org/docs/devel/html/code/writing-tests.html > 试图让它更容易。关键是要确保 linuxcnc 的行为可预测,并且根据文档,用户数量无关紧要。经过测试的每个功能都让您更容易对新版本充满信心。
(选择一种我和我无法区分的字体是不是 github 有点愚蠢)
绝对地。:)
|
一个测试可能需要我编写一个依赖于编译器和链接器标志的用户空间 C 组件,如果没有它,它将无法编译。 |
我设法使用这个更新的 halcompile 编译了 vfdb_vfd 和
@Roguish000您应该能够使用此处的 halcompile.g 文件覆盖系统上的 halcompile:https |
andypugh,感谢您为此付出努力。抱歉来晚了…… 所以如果我想 halcompile 我修改后的 vfdb_vfd.c 文件,它应该放在哪里?到底喜欢什么目录?特别是如果我正在使用 RIP(在我完成环境之后)。 |
新选项记录在此处: http: //linuxcnc.org/docs/2.9/html/hal/comp.html(包括您需要的确切命令行) |
行。在 debian 12 bookworm 的真实机器和 VM 上运行,具有最新和最好版本的 linuxcnc 和所有相关的东西,包括 RIP 构建,所有主分支。
在未修改的现有用户组件上进行测试。
我尝试使用 halcompile 创建一个非常小的 vfdb_vfd.c comp 版本。尝试了各种各样的事情。
终于能够更好地阅读 halcompile 消息。看图片。
请注意该行中的 -I。’-I/home/noel/comp -I/usr/include -I/usr/include/linuxcnc’
但是modbus头文件在/usr/include/modbus
所以找不到。
我将所有 4 个 modbus 头文件复制到 /usr/include/linuxcnc…..
瞧。有效。好吧,不是真的。克服了那个错误……现在更多的错误。请参阅第二张较长的图像。
还是不确定,不是程序员。
但这是一个现有的和工作的用户组件。
它不应该正确编译吗?
一点帮助请……