首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Ruby中的mkmf访问共享库文件?

如何使用Ruby中的mkmf访问共享库文件?
EN

Stack Overflow用户
提问于 2022-03-20 06:36:56
回答 1查看 64关注 0票数 0

我正试着和libcsv一起工作。头文件csv.h位于/usr/include目录中,共享库文件libcsv.so位于/usr/lib64 (Fedora 35)中。

目前,我已经能够使用shell命令使gem文件正常工作:

代码语言:javascript
复制
gcc -c -fPIC rcsv.c -o rcsv.o
gcc -shared -lcsv rcsv.o -o rcsv.so

我必须手动将.so文件移动到lib/rcsv/,这非常不方便,并且不利于安装gems。

我想在extconf.rb中用Ruby格式编写同样的代码。我该怎么做?

extconf.rb

代码语言:javascript
复制
require 'mkmf'

have_header("csv.h")
have_library('libcsv.so')

create_makefile('rcsv/rcsv')

rake日志

代码语言:javascript
复制
(in /home/<username>/Desktop/rcsv)
mkdir -p tmp/x86_64-linux/rcsv/3.0.3
cd tmp/x86_64-linux/rcsv/3.0.3
/home/<username>/.asdf/installs/ruby/3.0.3/bin/ruby -I. -r.rake-compiler-siteconf.rb ../../../../ext/rcsv/extconf.rb
checking for csv.h... yes
checking for -llibcsv.so... no
creating Makefile
cd -
cd tmp/x86_64-linux/rcsv/3.0.3
/usr/bin/gmake
compiling ../../../../ext/rcsv/rcsv.c
linking shared-object rcsv/rcsv.so
cd -
mkdir -p tmp/x86_64-linux/stage/lib/rcsv
/usr/bin/gmake install target_prefix=
/usr/bin/install -c -m 0755 rcsv.so /home/<username>/Desktop/rcsv/lib/rcsv
cp tmp/x86_64-linux/rcsv/3.0.3/rcsv.so tmp/x86_64-linux/stage/lib/rcsv/rcsv.so
Loaded suite /home/<username>/.asdf/installs/ruby/3.0.3/lib/ruby/gems/3.0.0/gems/rake-13.0.6/lib/rake/rake_test_loader
Started
/home/<username>/.asdf/installs/ruby/3.0.3/bin/ruby: symbol lookup error: /home/<username>/Desktop/rcsv/lib/rcsv/rcsv.so: undefined symbol: csv_init
rake aborted!
Command failed with status (127)

Tasks: TOP => default => test
(See full trace by running task with --trace)
EN

回答 1

Stack Overflow用户

发布于 2022-03-20 09:06:13

extconf.rb中的上述代码是正确的,但不是have_library('libcsv.so')中的字符串值,它应该是'csv'而不是'libcsv.so'

因此,总的来说,extconf.rb文件应该如下所示:

代码语言:javascript
复制
require 'mkmf'

have_header("csv.h")
have_library('csv')

create_makefile('rcsv/rcsv')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71544596

复制
相关文章

相似问题

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