toquelib与静态和动态链接的行为不同

时间:2014-05-29 20:45:36

标签: gcc cluster-computing dynamic-linking hpc torque

这令我感到困惑...... 我有一个看起来像这样的代码:

#include <stdio.h>
#include <pbs_ifl.h>

int doSomeStuff()
{
    char *server_name;
    int c;

    server_name = pbs_default();

    c = pbs_connect(server_name);
    printf("pbs_errno %d\n",pbs_errno);

    // do some stuff

    pbs_disconnect(c);
}

当我用以下代码编译它时:

gcc -static -o executablename sourcefile.c -ltorque

它可以正常工作,使用&#39; -static&#39;进行编译。 pbs_errno为0,我可以做我的东西。

但是,如果我删除了&#39; -static&#39;标志它在我运行它时开始给我这个消息:

munge: Error: Unable to access "/var/run/munge/munge.socket.2": No such file or directory

所以...我启动了munge服务(munged)并停止抱怨它,但我得到pbs_errno = 15033并且无法从群集中获取任何东西(做我的东西)。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我不知道我是否删除了问题或回答它,但它似乎已经解决了......所以我在这里发布解决方案。

我安装了两个版本的lib,一个通过yum,另一个通过源代码安装。 由于只有编译的代码具有静态库,当我链接时--static gcc与编译的代码链接,当我链接动态时,它与yum版本链接。

我只需要强制使用正确的libs链接,在喜欢时添加以下标志:

-Wl,-rpath=/usr/local/lib