首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用mkmf和Ruby将静态库与-L、-I和-l连接起来

使用mkmf和Ruby将静态库与-L、-I和-l连接起来
EN

Stack Overflow用户
提问于 2019-11-15 05:04:27
回答 1查看 332关注 0票数 1

给定一个简单的gcc命令,如下所示:

代码语言:javascript
复制
gcc quickrb.c -o main -L /usr/local/lib/quickjs -I /usr/local/lib/quickjs -l quickjs

我正在尝试使用extconf.rb将其封装到一个ruby扩展mkmf中。目前我有:

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

dir_config('quickjs', '/usr/local/lib/quickjs', '/usr/local/include/quickjs')

abort('missing "quickjs.h"') unless find_header('quickjs/quickjs.h')
abort('missing JS_NewRuntime') unless find_library('quickjs', 'JS_NewRuntime', 'quickjs/quickjs.h')
abort('missing JS_NewContext') unless find_library('quickjs', 'JS_NewContext', 'quickjs/quickjs.h')

create_makefile('quickrb/quickrb')

但以下几个方面都失败了:

代码语言:javascript
复制
checking for quickjs/quickjs.h... yes
checking for JS_NewRuntime() in -lquickjs... no
missing JS_NewRuntime

我不知道该怎么处理。但是,如果没有find_library调用,Makefile将生成,但是在使用以下方法编译时会失败:

代码语言:javascript
复制
dyld: Symbol not found: _JS_NewRuntime

Note

下面是我的示例quickrb.c文件:

代码语言:javascript
复制
#include <quickjs/quickjs.h>

#include <ruby.h>

#include <stdio.h>
#include <strings.h>

void Init_quickrb()
{
  const char *filename = "runtime";
  const char *script = "3 + 4";
  const size_t length = strlen(script);

  JSRuntime *runtime = JS_NewRuntime();
  JSContext *context = JS_NewContext(runtime);

  JSValue value = JS_Eval(context, script, length, filename, JS_EVAL_TYPE_GLOBAL);

  const char *result = JS_ToCString(context, value);
  printf("%s = %s\n", script, result);
  JS_FreeCString(context, result);

  JS_FreeContext(context);
  JS_FreeRuntime(runtime);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-15 05:36:29

你想要的是:

代码语言:javascript
复制
find_library('quickjs', 'JS_NewRuntime', '/usr/local/lib/quickjs')

因为文献资料说:

find_library(lib,func,*path,&b) public 返回是否可以在库lib 中指定的路径中找到入口点func,其中路径是字符串数组。如果func为nil,则使用main()函数作为入口点。 如果找到lib,则将查找到的路径添加到搜索和链接到的库路径列表中。

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

https://stackoverflow.com/questions/58870610

复制
相关文章

相似问题

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