首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Mac OS X上使用SWIG为Ruby编译库

在Mac OS X上使用SWIG为Ruby编译库
EN

Stack Overflow用户
提问于 2010-06-18 05:08:41
回答 1查看 786关注 0票数 1

我尝试编译下面的库,直到最后一步,一切都很顺利。

代码语言:javascript
复制
/* File : computation.c */
int add(int x, int y) {
  return x + y;
}

/* File: computation.i */
%module computation
extern int add(int x, int y);

$ swig -ruby computation.i
$ gcc -c computation.c
$ gcc -c computation_wrap.c -I/opt/local/lib/ruby/1.8/i686-darwin10
$ gcc -shared computation.o computation_wrap.o -o computation.so

Undefined symbols:
  "_rb_str_cat", referenced from:
      _Ruby_Format_TypeError in computation_wrap.o
  "_rb_exc_new3", referenced from:
      _SWIG_Ruby_ExceptionType in computation_wrap.o
  "_rb_define_class_under", referenced from:
      _SWIG_Ruby_define_class in computation_wrap.o
      _SWIG_Ruby_define_class in computation_wrap.o
[...]
ld: symbol(s) not found
collect2: ld returned 1 exit status

我的配置:

代码语言:javascript
复制
$ sw_vers
ProductName:  Mac OS X
ProductVersion: 10.6.3
BuildVersion: 10D575
$ ruby -v
ruby 1.8.7 (2010-01-10 patchlevel 249) [i686-darwin10]
$ swig -version
SWIG Version 1.3.40
Compiled with /usr/bin/g++-4.2 [i386-apple-darwin10.3.0]
$ gcc --version
i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5646)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-12-22 06:29:38

尝试使用以下标志编译共享对象:

代码语言:javascript
复制
$ gcc -bundle -flat_namespace -undefined suppress computation.o computation_wrap.o -o computation.so

您可能还需要添加“Ruby”,因为看起来您在雪豹上运行的是32位-arch i386。

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

https://stackoverflow.com/questions/3065649

复制
相关文章

相似问题

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