这令我感到困惑...... 我有一个看起来像这样的代码:
#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并且无法从群集中获取任何东西(做我的东西)。
有什么想法吗?
答案 0 :(得分:0)
我不知道我是否删除了问题或回答它,但它似乎已经解决了......所以我在这里发布解决方案。
我安装了两个版本的lib,一个通过yum,另一个通过源代码安装。 由于只有编译的代码具有静态库,当我链接时--static gcc与编译的代码链接,当我链接动态时,它与yum版本链接。
我只需要强制使用正确的libs链接,在喜欢时添加以下标志:
-Wl,-rpath=/usr/local/lib