hwloc ( http://www.open-mpi.org/projects/hwloc/ ) を非常に基本的なアプリケーションにリンクしようとしています。以下、詳細です
main.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)
私の 2 つのファイル (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 はアプリケーションにパッケージ化されているため、どこにあるかを認識できます。