这让我很困惑..。我有这样的代码:
#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它工作得很好,用“静态”编译。pbs_errno是0,我可以做我的事情。
但是,如果我删除了“-静态”标志,当我运行它时,它就会给我这个消息:
munge: Error: Unable to access "/var/run/munge/munge.socket.2": No such file or directory所以..。我启动了munge服务(Munge),它不再抱怨它了,但是我得到了pbs_errno=15033,无法从集群中得到任何东西(做我的事情)。
有什么想法吗?
发布于 2014-06-02 15:37:42
我不知道我是删除了问题还是回答了问题,但似乎已经解决了.所以我在这里张贴解决方案。
我安装了两个版本的库,一个通过yum安装,另一个通过源代码安装。因为只有编译的代码具有静态库,所以当我链接-static时,gcc是与编译的代码链接,而当我链接dynamic时,它是与yum版本的链接。
我只需要在喜欢的时候使用正确的库来执行链接,添加以下标志:
-Wl,-rpath=/usr/local/libhttps://stackoverflow.com/questions/23942680
复制相似问题