首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >toquelib在静态和动态链接中的行为不同。

toquelib在静态和动态链接中的行为不同。
EN

Stack Overflow用户
提问于 2014-05-29 20:45:35
回答 1查看 45关注 0票数 0

这让我很困惑..。我有这样的代码:

代码语言:javascript
复制
#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);
}

当我编译它时:

代码语言:javascript
复制
gcc -static -o executablename sourcefile.c -ltorque

它工作得很好,用“静态”编译。pbs_errno是0,我可以做我的事情。

但是,如果我删除了“-静态”标志,当我运行它时,它就会给我这个消息:

代码语言:javascript
复制
munge: Error: Unable to access "/var/run/munge/munge.socket.2": No such file or directory

所以..。我启动了munge服务(Munge),它不再抱怨它了,但是我得到了pbs_errno=15033,无法从集群中得到任何东西(做我的事情)。

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-02 15:37:42

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

我安装了两个版本的库,一个通过yum安装,另一个通过源代码安装。因为只有编译的代码具有静态库,所以当我链接-static时,gcc是与编译的代码链接,而当我链接dynamic时,它是与yum版本的链接。

我只需要在喜欢的时候使用正确的库来执行链接,添加以下标志:

代码语言:javascript
复制
-Wl,-rpath=/usr/local/lib
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23942680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档