开源改变世界

Halcompile 不包括 modbus 头文件…………………. #2204

推推 grbl 3年前 (2023-01-31) 377次浏览
打开
Roguish000 打开了这个问题 2022 年 12 月 12 日 · 19条评论
打开

Halcompile 不包括 modbus 头文件………………….#2204

Roguish000 打开了这个问题 2022 年 12 月 12 日 · 19条评论

注释

Halcompile 不包括 modbus 头文件...................... #2204
贡献者

行。在 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…..

瞧。有效。好吧,不是真的。克服了那个错误……现在更多的错误。请参阅第二张较长的图像。
还是不确定,不是程序员。
但这是一个现有的和工作的用户组件。
它不应该正确编译吗?

一点帮助请……

Halcompile 不包括 modbus 头文件...................... #2204

Halcompile 不包括 modbus 头文件...................... #2204

Halcompile 不包括 modbus 头文件...................... #2204
合作者
彼得赖因霍尔特森 评论了 2022 年 12 月 12 日 通过电子邮件
Halcompile 不包括 modbus 头文件...................... #2204
合作者

可能有一种方法可以通过

#pragma GCC …

源文件中的行。

但是,从实用的角度(原文如此)您可以在您的系统上查找 Makefile.modinc 并将上面的选项添加到 EXTRA_CFLAGS 行。

Halcompile 不包括 modbus 头文件...................... #2204
合作者

我创建了一个测试分支(https://github.com/LinuxCNC/linuxcnc/tree/andypugh/halcompile_opts),它允许以下命令行:

halcompile --userspace --install --extra_compile_args="-I/usr/include/modbus" --extra_link_args="-lm -lmodbus" hal/user_comps/vfdb_vfd/vfdb_vfd.c

这几乎可以工作(不再有 modbus 问题)但是在链接 inifile.h 函数时遇到问题。而且我不知道如何链接它。

Halcompile 不包括 modbus 头文件...................... #2204
合作者
彼得赖因霍尔特森 评论了 2022 年 12 月 26 日 通过电子邮件
Halcompile 不包括 modbus 头文件...................... #2204
合作者

凉爽的。tests/ 中的测试用例怎么样?

对于任何人都不太可能使用的东西来说似乎很麻烦……

无法链接 inifile.h 函数。而且我不知道如何链接它。
列出几个 -I 和 -l 条目有什么问题?

没问题,我只是没有找到链接 inifile.h 的 -l(如 L

Halcompile 不包括 modbus 头文件...................... #2204
合作者
彼得赖因霍尔特森 评论了 2022 年 12 月 26 日 通过电子邮件
Halcompile 不包括 modbus 头文件...................... #2204
合作者

一个测试可能需要我编写一个依赖于编译器和链接器标志的用户空间 C 组件,如果没有它,它将无法编译。
因此,它需要是一个有效的组件,它需要依赖外部库(不是 modbus,modbus 是可选的),并且需要在有或没有额外标志的情况下提供可预测的输出。
除非曾经抱怨过这个问题的唯一用户返回到线程,否则我可能甚至不会费心进行修改。

Halcompile 不包括 modbus 头文件...................... #2204
贡献者作者
流氓000 评论了 上个月

安迪普。我在这。一直忙于让我的系统运行,所有以太网计时问题和 qtvcp 更改。我绝对想继续这个问题……

Halcompile 不包括 modbus 头文件...................... #2204
合作者

我刚刚想到的事情…… modbus 库是实时安全的吗?我们拥有 rtapi 的部分原因是要确保所有使用的函数永远不会忙等待并以原子方式执行操作(这样如果它们被中断它们就不会留下变量或数据半更新)

Halcompile 不包括 modbus 头文件...................... #2204
贡献者作者

远远超出了我的薪水等级…………和知识水平…………
但人们应该希望如此。

Halcompile 不包括 modbus 头文件...................... #2204
合作者

远远超出了我的薪水等级…………和知识水平…………
但人们应该希望如此。

其实,你可以忽略这个问题,这是一个用户空间组件不是吗?

Halcompile 不包括 modbus 头文件...................... #2204
成员

我认为使 comp“option extra_compile_args”和“extra_link_args”可从命令行控制的解决方案是一个好主意。最好说(目前)在两个地方(命令行和 .comp)都指定它们的效果是未指定的,这样我们以后可以弄清楚是否有一种明智的方法来组合来自两个来源的选项,或者学习根据经验,哪个应该优先于另一个。

Halcompile 不包括 modbus 头文件...................... #2204
成员

此外,我不确定应该如何或在何处注意到并非源代码树中的所有 .comp 文件都可以简单地由 halcompile 编译;但我认为这在过去也曾使人们感到困惑。(对于用户补偿比 rt 补偿更重要)

Halcompile 不包括 modbus 头文件...................... #2204
合作者

我设法使用这个更新的 halcompile 编译了 vfdb_vfd 和

halcompile --userspace --install --extra_compile_args="-I/usr/include/modbus" --extra_link_args="-lm -lmodbus -llinuxcncini" hal/user_comps/vfdb_vfd/vfdb_vfd.c

@Roguish000您应该能够使用此处的 halcompile.g 文件覆盖系统上的 halcompile:https
://github.com/LinuxCNC/linuxcnc/blob/andypugh/halcompile_opts/src/hal/utils/halcompile.g (需要单击“raw”然后另存为(可能是 .py 而不是 .g)

Halcompile 不包括 modbus 头文件...................... #2204
贡献者作者

andypugh,感谢您为此付出努力。抱歉来晚了……
我已经能够获得您创建并在上面提到的文件。我也刚刚完成了一个 git clone 和 RIP(昨天,1 月 13 日)。
您的文件和 git 源文件中的文件看起来相同(我对它们进行了比较)。
,,,,.g 和 .py 文件有什么区别?我知道 .py python 文件是什么。只是从未听说过 .g ….

所以如果我想 halcompile 我修改后的 vfdb_vfd.c 文件,它应该放在哪里?到底喜欢什么目录?特别是如果我正在使用 RIP(在我完成环境之后)。
我还复制了您的命令行,它似乎很有意义,但我没有在任何文档(手册页或 html)中看到这些 –extra… 参数。
我坚信我所依赖的 RTFM。
因此,我们将不胜感激任何一点帮助。

Halcompile 不包括 modbus 头文件...................... #2204
合作者

新选项记录在此处: http: //linuxcnc.org/docs/2.9/html/hal/comp.html(包括您需要的确切命令行)
我认为文件的长度并不重要因为它与您运行 halcompile 的位置相同。

Halcompile 不包括 modbus 头文件...................... #2204
贡献者作者

安迪,好吧,我回去做了一个 –enable-build-documentation。花了一点时间让 firefox 打开本地文件,但我明白了。
现在阅读文档。

Halcompile 不包括 modbus 头文件...................... #2204
贡献者作者

安迪,再次感谢。但还没有成功。
我确实在文档中注意到一件事。在 –extra_link_args 的描述中,您引用了临时目录“-L”。在示例命令行中,您使用小写字母 L (l)。不确定哪个是正确的,但我知道 linux 非常区分大小写。
extra_compile_args 描述和示例使用都可以。

我注意到您提到了 2.9 文档。所以我从 Seb 的秘密构建机器人卸载了 2.10 并安装了 2.9。

现在,我就是无法让它工作。看图片。在包含 comp 文件的目录中工作,我尝试了多种命令组合来尝试确定问题所在,但运气不佳。按安装方式运行,而不是 2.10 的 RIP。

Halcompile 不包括 modbus 头文件...................... #2204

Halcompile 不包括 modbus 头文件...................... #2204
合作者

新内容应该在 2.9 和 2.10 中都有。
可能是 secret buildbot 上的版本(秘密到我不知道它……)还没有赶上更新?

免费注册 在 GitHub 上加入此对话。已有帐户? 登录评论
标签
还没有
项目

还没有

发展

没有分支机构或拉取请求

4人参加
Halcompile 不包括 modbus 头文件...................... #2204Halcompile 不包括 modbus 头文件...................... #2204Halcompile 不包括 modbus 头文件...................... #2204Halcompile 不包括 modbus 头文件...................... #2204

喜欢 (0)