错误:未定义符号:omp_init_lock仅在使用node-gyp编译时
Error: undefined symbol: omp_init_lock only when compiling with node-gyp
我正在尝试编译一个使用外部库的c++插件。我的绑定。p文件看起来像这样:
{
"targets": [
{
"target_name": "addon",
"sources": [ "addon.cc" ],
"include_dirs": [
"<!(node -e "require('nan')")"
],
"libraries":[
"/home/ubuntu/workspace/libdds.a"
],
}
]
}
当我尝试用node- yp编译它时,它编译得很好,但在运行时我得到以下错误:
Error: /home/ubuntu/workspace/build/Release/addon.node: undefined symbol: omp_init_lock
at Error (native)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Module.require (module.js:365:17)
at require (module.js:384:17)
at Object.<anonymous> (/home/ubuntu/workspace/addon.js:1:75)
at Module._compile (module.js:460:26)
at Object.Module._extensions..js (module.js:478:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
omp_int_lock不在插件中。Cc代码,而不是在libdds。我正在使用的图书馆。我试着把我的代码转换成命令行程序。像这样编译:
g++ -o ddsolver -O2 -Wall leadsolver.cpp libdds.a -lgomp
编译和运行良好。有人见过这个问题吗?
看起来像你的外部库libdds。a使用OpenMP进行并行执行,因为它是静态链接的,所以你需要提供-lgomp来解决所有的依赖关系。
我认为你也可以用-fopenmp来编译它,而不是-lgomp
相关文章:
- 二叉排序树无法编译
- node-gyp 在 macOS 上未正确链接库
- node-gyp 的先有鸡还是先有蛋的问题:指向依赖项中的头文件
- NodeJS:node-gyp 编译与等效的 gcc -lm 选项
- 在node-gip binding.gyp文件中,如何根据系统结构(32位、64位)包含不同的库文件
- 在没有节点GYP的目标平台上编译C/C 文件
- Mac 上的 node-gyp 构建错误"calling a protected constructor of class 'v8::HandleScope'"
- 如何编译 node.js for CentOS 6.10 (库问题)
- g++ 构建错误与 node-gyp 重建 Node.js 插件
- node-gyp - 处理".h.in"文件
- 如何在没有 FPU 的情况下使用 ARMv7 编译 Node-v4.2.4
- 在构建Node.js/Node-webkit插件时,通过binding.gyp将.cpp文件编译为Objective-C
- 无法编译C++代码:从'Node*'到'int'的转换无效
- C++代码使用普通的V8引擎编译良好,无法使用Node提供的V8进行构建
- 如何包含c++库以便node-gyp可以链接
- 如何添加node-gyp不直接支持的自定义编译器标志?
- node.js中使用node-gyp的转换数组
- xcode解决方案的Node-gyp链接问题
- OSX 10.7.5 上的 node-gyp -- dyld:惰性符号绑定失败:找不到符号
- 错误:未定义符号:omp_init_lock仅在使用node-gyp编译时