- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我写了一个小的 c 文件来测试 DRMAA,但它一直告诉我我使用的 DRMAA 函数没有定义。我在 C 代码中包含了 drmaa.h 文件。当我使用 -idrmaa 时出现此错误:
[mkatouzi@argo-1 ~]$ cc -o drmtest -I$SGE_ROOT/include/ -ldrmaa -ldl drmtest.c
/usr/bin/ld: cannot find -ldrmaa
DRMAA 头文件在这个路径:$SGE_ROOT/include/
如果我在没有 -ldrmaa 的情况下编译文件,我会收到此错误:
[mkatouzi@argo-1 ~]$ cc -o drmtest -I$SGE_ROOT/include/ drmtest.c
/tmp/cclsPr9O.o: In function `main':
drmtest.c:(.text+0x3c): undefined reference to `drmaa_init'
drmtest.c:(.text+0x83): undefined reference to `drmaa_exit'
collect2: ld returned 1 exit status
我正在使用我学校的 UNIX 系统,我对它还很陌生。谁能帮我解决这个问题?
这是我的 drmtest.c 文件:
#include <stdio.h>
#include "drmaa.h"
int main (int argc, char **argv) {
char error[DRMAA_ERROR_STRING_BUFFER];
int errnum = 0;
errnum = drmaa_init (argv[0], error, DRMAA_ERROR_STRING_BUFFER);
if (errnum != DRMAA_ERRNO_SUCCESS) {
fprintf (stderr, "Couldn't init DRMAA library: %s\n", error);
return 1; }
/* Do Stuff */
errnum = drmaa_exit (error, DRMAA_ERROR_STRING_BUFFER);
if (errnum != DRMAA_ERRNO_SUCCESS) {
fprintf (stderr, "Couldn't exit DRMAA library: %s\n", error);
return 1; }
return 0;
}
最佳答案
在第一种情况下,链接器是你告诉它不知道在哪里可以找到 drmaa
库。在第二种情况下,由于您没有包含 drmaa
库,链接器告诉您它不知道如何解析您正在使用的 drmaa
函数。
您需要弄清楚 drmaa
库文件在哪里,即在哪个目录中。
一旦知道,就可以在编译/链接时指定-L/path/to/drmaa/directory
来解决问题。
根据 Brian Cain 的回答,库(drmaa.a
或 drmaa.so
)可能位于 $SGE_ROOT/lib
下。
最后,由于存放库的目录不在系统的标准库搜索路径中,所以在运行可执行文件时,你必须告诉动态链接器去哪里找库。有两种方法可以实现这一点:
将 LD_LIBRARY_PATH 环境变量设置(并导出)到库目录(例如 $SGE_ROOT/lib
)
或者在编译/链接时添加-R/path/to/drmaa/directory
选项。
关于c - DRMAA- 编译 c 文件时无法链接 drmaa 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26180577/
我写了一个小的 c 文件来测试 DRMAA,但它一直告诉我我使用的 DRMAA 函数没有定义。我在 C 代码中包含了 drmaa.h 文件。当我使用 -idrmaa 时出现此错误: [mkatouzi
我正在使用drmaa-python向 SGE (Sun Grid Engine) 提交和监控来自 SGE (Sun Grid Engine) 的作业。我在 GUI 中有以下状态 队列中的事件作业 正在
我正在使用snakemake v. 5.7.0。当在本地启动或通过 snakemake --drmaa 提交给 SLURM 时,管道可以正确运行: 作业被提交,一切都按预期进行。但是,在后一种情况下,
我想等待外部提交的作业完成。 我的第一个想法是通过调用 qstat 获取 jobID,然后执行 session.wait(jobID, Session.TIMEOUT_WAIT_FOREVER);。但
有人知道已知可与 PBS/Torque 集群软件一起使用的 DRMAA-API 的 Java 实现吗? 这背后的背景:我想使用符合 DRMAA 的 API 从 Java 向新设置的 linux 集群提
DRMAA 如何运作?使用 DRMAA 的本地 Java 程序是否可以通过 SSH 在远程集群上启 Action 业(这样就不需要在服务器端安装任何内容)? 背景:我正在 Java/Eclipse R
我是一名优秀的程序员,十分优秀!