首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GnuCOBOL调用Rust: libcob: error:模块未找到

GnuCOBOL调用Rust: libcob: error:模块未找到
EN

Stack Overflow用户
提问于 2022-10-14 15:40:01
回答 1查看 70关注 0票数 3

我想从GnuCOBOL打电话给罗斯特。我从Brian的GnuCOBOL能与Rust接口吗? FAQ中复制了第一个示例中的代码作为测试,但是在运行它时得到了一个错误。

预期:

代码语言:javascript
复制
$ make -B
rustc --crate-type=dylib called.rs
LD_RUN_PATH=. cobc -xj caller.cob -L. -lcalled
:Hello, world:

实际:

代码语言:javascript
复制
$ make -B
rustc --crate-type=dylib called.rs
LD_RUN_PATH=. cobc -xj caller.cob -L. -lcalled
libcob: error: module 'hello_rust' not found
make: *** [makefile:5: caller] Error 1

在从命令行编译两个文件,然后使用$ ./caller后,我会得到相同的错误。

基于cobc手册页以及GnuCOBOL手册锈蚀基准的链接部分,语法似乎是正确的。我尝试过$ ./caller COB_LIBRARY_PATH=.,如GnuCOBOL手册中所描述的,但这并没有什么区别。Rust源代码按预期编译到库中,但COBOL没有找到它。

使用$ cobcrun caller代替显示libcob: error: module 'caller' not found

关于类似错误的问题是关于静态链接多个COBOL源文件的问题,这很好,而关于类似错误的问题似乎是X"AF"的一个问题,这里不使用它。静态地将C源链接到Jay的调用库函数的C包装器示例中,效果如出一辙。静态链接锈蚀源是不支持的。

软件版本:

  • Ubuntu 22.04.1 LTS
  • cobc (GnuCOBOL) 3.1.2.0
  • 锈蚀1.64.0
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-15 05:31:31

问题似乎是COBOL caller可执行文件试图在运行时动态加载名为hello_rust.so的库而不是libcalled.so

  • 简单的解决方法是只创建一个符号链接,而无需修改任何内容: -s libcalled.so hello_rust.so $
  • 或者,将-fstatic添加到cobc命令应该在编译时静态地链接Rust库,从而消除动态库运行时调用。 示例Makefile可以更新为如下所示:GnuCOBOL和Rust .RECIPEPREFIX =>调用者: caller.cob libcalled.so > LD_RUN_PATH=。-fstatic -xj caller.cob -L.-lcalled libcalled.so: called.rs > rustc --纸箱型=dylib called.rs

作为参考,我们可以通过strace调查可执行文件在做什么,看看COBOL运行时正在生成什么系统调用--在我们的例子中--它找不到哪些文件。

代码语言:javascript
复制
$ strace ./caller 2>&1 | grep hello_rust                                                                                                                                         
access("./hello_rust.so", R_OK)         = -1 ENOENT (No such file or directory)
access("/usr/lib64/gnucobol/hello_rust.so", R_OK) = -1 ENOENT (No such file or directory)
write(2, "module 'hello_rust' not found", 29module 'hello_rust' not found) = 29
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74071691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档