【问题标题】:toquelib behaves different with static and dynamic linkingtoquelib 的行为与静态和动态链接不同
【发布时间】:2014-05-29 20:45:35
【问题描述】:

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

#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 并且无法从集群中获取任何东西(做我的事情)。

有什么想法吗?

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-31
      • 2011-09-05
      • 1970-01-01
      • 2023-03-05
      • 1970-01-01
      相关资源
      最近更新 更多