2014-02-21 28 views
1

更复杂的问题在这种情况下已经在其他地方提出并回答:这个问题可能太重要了。在集群中,我编译并链接到/ usr/local/lib头节点上的共享boost库的程序,并且此boost版本比集群发行版提供的版本更新。该程序在头节点上运行良好,因为我导出了LD_LIBRARY_PATH。如果我尝试使用扭矩调度程序来运行它,这些库在计算节点上不可用,从而产生“加载共享库时出错...”。除了重建boost作为静态库并以这种方式链接程序之外,是否有一种简单的方法可以使这些库可用于所有节点?只需在作业脚本中导出路径,即使用扭矩在头节点上制作本地共享库可用于计算节点,使用扭矩

export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH 

不起作用,因为显然该路径在计算节点上不存在。这看起来像这样一个愚蠢的问题,但是将头节点上的本地对象用于所有计算节点的最简单方法是什么?

回答

1

人们这样做的最常见方式是将库安装在计算节点上。有时这意味着将其安装在节点的一个子集上,用一个功能标记这些节点,然后要求该功能用于特定作业将使用的节点。其他时候,它将库安装到各处,以便您不必担心,但这是解决此问题的最常见方法。

如果版本控制太难以在计算节点上管理,那么将该库静态编译到程序中可能是您​​拥有的唯一选项。

+0

dbeer,谢谢你的解释。亲切的问候// rolf – Rolf