0

这让我很困惑......我有一个看起来像这样的代码:

#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

它工作正常,用'-static'编译。pbs_errno 为 0,我可以做我的事情。

但是,如果我删除“-static”标志,它会在我运行它时开始给我这个消息:

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

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

有任何想法吗?

4

1 回答 1

0

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

我安装了 2 个版本的 lib,一个通过 yum 另一个通过源。因为只有编译后的代码有静态库,所以当我链接 -static gcc 时链接到编译后的代码,当我链接动态时它链接到 yum 版本。

我只需要在喜欢时添加以下标志来强制与正确的库进行链接:

-Wl,-rpath=/usr/local/lib
于 2014-06-02T15:37:42.303 回答