我正在尝试将 hwloc ( http://www.open-mpi.org/projects/hwloc/ ) 链接到我非常基本的应用程序。以下是详细信息
主.cxx:
#include <hwloc.h>
#include <stdio.h>
int main(int argc, char** argv) {
hwloc_topology_t topology;
int ncores;
hwloc_topology_init(&topology);
hwloc_topology_load(topology);
ncores = hwloc_get_nbobjs_by_type(topology, HWLOC_OBJ_CORE);
printf("Number of cores: %d\n", ncores);
hwloc_topology_destroy(topology);
return 0;
}
生成文件:
.SUFFIXES: .cxx .o
CXX = g++
TARGET = tests
SRCS = main.cxx
OBJS = $(SRCS:.cxx=.o)
HWLOC_ROOT = $(CURDIR)/hwloc
HWLOC_INCS = -I$(HWLOC_ROOT)/include
HWLOC_LIBS = -L$(HWLOC_ROOT)/lib -lhwloc
FLAGS = -std=c++0x $(HWLOC_INCS)
LDFLAGS = $(HWLOC_LIBS)
%.o : %.cxx
$(CXX) -c $(FLAGS) $<
$(TARGET) : $(OBJS)
$(CXX) -o $@ $^ $(LDFLAGS) -lstdc++
clean :
rm -rf *.o $(TARGET)
在与我的两个文件(main.cxx 和 Makefile)相同的目录中是包含 hwloc 的目录。它已正确安装,因为我以前使用过它。
我可以编译一切就好了。当我运行时./tests
,我收到以下错误:
./tests: error while loading shared libraries: libhwloc.so.5: cannot open shared object file: No such file or directory
./hwloc 内部:
bin/ include/ lib/ share/
在 ./hwloc/lib 中:
libhwloc.la libhwloc.so libhwloc.so.5 libhwloc.so.5.3.1 pkgconfig/
很明显libhwloc.so.5
存在,所以我不确定问题是什么。我感谢对我的问题的任何帮助。
编辑:
为了澄清,重点是不必将目录添加到我的路径中。我不想为了让链接器知道 libhwloc.so.5 的位置而必须执行任何命令行命令。目标是能够将我的应用程序的根目录移动到我的计算机或另一台计算机上的任何位置,并且它仍然知道 libhwloc.so.5 的位置,因为它与应用程序一起打包。