我正在尝试链接 Tensorflow 库。这是我的 makefile:
TF_PATH=/home/wade/.local/lib/python3.10/site-packages/tensorflow
CFLAGS=-I$(TF_PATH)/include/ -L$(TF_PATH)/
CC=cc
artifaction : artifaction.o
$(CC) -o artifaction artifaction.o $(CFLAGS) -ltensorflow_cc
artifaction.o :
$(CC) -c artifaction.cc $(CFLAGS)
位于
$(TF_PATH)/
的是libtensorflow_cc.so.2
。我想链接到这个共享库,所以我提供了 cc
和 -L$(TF_PATH)/
。目前,我收到此错误:
cc -o artifaction artifaction.o -I/home/wade/.local/lib/python3.10/site-packages/tensorflow/include/ -L/home/wade/.local/lib/python3.10/site-packages/tensorflow/ -ltensorflow_cc
/usr/bin/ld: cannot find -ltensorflow_cc: No such file or directory
collect2: error: ld returned 1 exit status
make: *** [Makefile:7: artifaction] Error 1
操作系统:Ubuntu 20.04 LTS。
TF 版本:2.15.
我在这里使用
cc
,但是使用g++
和clang
也会出现同样的错误。
我该如何解决这个问题?
链接器将始终寻找
lib<name>.so
或lib<name>.a
。如果库有一个奇怪的扩展名,比如 .so.2
,那么链接器将无法找到该库。解决方案是使用 symlink
命令创建 ln
,该命令会将链接器重定向到您想要的 .so
。
就我而言,我运行了
ln -s libtensorflow_cc.so.2 libtensorflow_cc.so
和 ln -s libtensorflow_framework.so.2 libtensorflow.so
,然后链接器能够找到库。