cc 编译器在提供的路径中找不到链接库

问题描述 投票:0回答:1

我正在尝试链接 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
也会出现同样的错误。

我该如何解决这个问题?

c++ makefile cc
1个回答
0
投票

解决方案

链接器将始终寻找

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
,然后链接器能够找到库。

© www.soinside.com 2019 - 2024. All rights reserved.