链接器错误:/usr/bin/ld:在尝试用clang编译CUDA代码时找不到-lcudart_static

发布于 2025-01-31 12:39:28 字数 3875 浏览 3 评论 0原文

我试图按照官方文档在这里

clang++ axpy.cu -o exec --cuda-gpu-arch=sm_60 -L/usr/local/cuda -lcudart_static -ldl -lrt -pthread

给 :链接器错误和警告:

clang:警告:未知的CUDA版本。 cuda.h:cuda_version = 11060。假设最新支持的版本10.1 [-wunknown-cuda-version]

/usr/bin/ld:找不到-lcudart_static

clang:error:linker命令因出口代码1失败(使用-V查看调用)

我已安装了Clang版本11。 跑步:

nvidia-smi

我得到:

我在某个地方阅读了我需要添加符号链接到libcudart文件之类的东西,如果有帮助的话。

我会在运行时得到以下输出:

ld -lcudart_static --verbose
attempt to open /usr/local/lib/x86_64-linux-gnu/libcudart_static.so failed
attempt to open /usr/local/lib/x86_64-linux-gnu/libcudart_static.a failed
attempt to open /lib/x86_64-linux-gnu/libcudart_static.so failed
attempt to open /lib/x86_64-linux-gnu/libcudart_static.a failed
attempt to open /usr/lib/x86_64-linux-gnu/libcudart_static.so failed
attempt to open /usr/lib/x86_64-linux-gnu/libcudart_static.a failed
attempt to open /usr/lib/x86_64-linux-gnu64/libcudart_static.so failed
attempt to open /usr/lib/x86_64-linux-gnu64/libcudart_static.a failed
attempt to open /usr/local/lib64/libcudart_static.so failed
attempt to open /usr/local/lib64/libcudart_static.a failed
attempt to open /lib64/libcudart_static.so failed
attempt to open /lib64/libcudart_static.a failed
attempt to open /usr/lib64/libcudart_static.so failed
attempt to open /usr/lib64/libcudart_static.a failed
attempt to open /usr/local/lib/libcudart_static.so failed
attempt to open /usr/local/lib/libcudart_static.a failed
attempt to open /lib/libcudart_static.so failed
attempt to open /lib/libcudart_static.a failed
attempt to open /usr/lib/libcudart_static.so failed
attempt to open /usr/lib/libcudart_static.a failed
attempt to open /usr/x86_64-linux-gnu/lib64/libcudart_static.so failed
attempt to open /usr/x86_64-linux-gnu/lib64/libcudart_static.a failed
attempt to open /usr/x86_64-linux-gnu/lib/libcudart_static.so failed
attempt to open /usr/x86_64-linux-gnu/lib/libcudart_static.a failed
ld: cannot find -lcudart_static
attempt to open /usr/local/lib/x86_64-linux-gnu/libcudart_static.so failed
attempt to open /usr/local/lib/x86_64-linux-gnu/cudart_static.a failed
attempt to open /lib/x86_64-linux-gnu/libcudart_static.so failed
attempt to open /lib/x86_64-linux-gnu/cudart_static.a failed
attempt to open /usr/lib/x86_64-linux-gnu/libcudart_static.so failed
attempt to open /usr/lib/x86_64-linux-gnu/cudart_static.a failed
attempt to open /usr/lib/x86_64-linux-gnu64/libcudart_static.so failed
attempt to open /usr/lib/x86_64-linux-gnu64/cudart_static.a failed
attempt to open /usr/local/lib64/libcudart_static.so failed
attempt to open /usr/local/lib64/cudart_static.a failed
attempt to open /lib64/libcudart_static.so failed
attempt to open /lib64/cudart_static.a failed
attempt to open /usr/lib64/libcudart_static.so failed
attempt to open /usr/lib64/cudart_static.a failed
attempt to open /usr/local/lib/libcudart_static.so failed
attempt to open /usr/local/lib/cudart_static.a failed
attempt to open /lib/libcudart_static.so failed
attempt to open /lib/cudart_static.a failed
attempt to open /usr/lib/libcudart_static.so failed
attempt to open /usr/lib/cudart_static.a failed
attempt to open /usr/x86_64-linux-gnu/lib64/libcudart_static.so failed
attempt to open /usr/x86_64-linux-gnu/lib64/cudart_static.a failed
attempt to open /usr/x86_64-linux-gnu/lib/libcudart_static.so failed
attempt to open /usr/x86_64-linux-gnu/lib/cudart_static.a failed

有人可以帮忙吗?

I tried to compile a axpy.cu file as specified in the official docs here:

clang++ axpy.cu -o exec --cuda-gpu-arch=sm_60 -L/usr/local/cuda -lcudart_static -ldl -lrt -pthread

But that gave a linker error and warning:

clang: warning: Unknown CUDA version. cuda.h: CUDA_VERSION=11060. Assuming the latest supported version 10.1 [-Wunknown-cuda-version]

/usr/bin/ld: cannot find -lcudart_static

clang: error: linker command failed with exit code 1 (use -v to see invocation)

I have clang version 11 installed.
On running:

nvidia-smi

I get:
enter image description here

I read somewhere that I need to add a symbolic link to libcudart file or something if that helps.

I get the following output on running:

ld -lcudart_static --verbose
attempt to open /usr/local/lib/x86_64-linux-gnu/libcudart_static.so failed
attempt to open /usr/local/lib/x86_64-linux-gnu/libcudart_static.a failed
attempt to open /lib/x86_64-linux-gnu/libcudart_static.so failed
attempt to open /lib/x86_64-linux-gnu/libcudart_static.a failed
attempt to open /usr/lib/x86_64-linux-gnu/libcudart_static.so failed
attempt to open /usr/lib/x86_64-linux-gnu/libcudart_static.a failed
attempt to open /usr/lib/x86_64-linux-gnu64/libcudart_static.so failed
attempt to open /usr/lib/x86_64-linux-gnu64/libcudart_static.a failed
attempt to open /usr/local/lib64/libcudart_static.so failed
attempt to open /usr/local/lib64/libcudart_static.a failed
attempt to open /lib64/libcudart_static.so failed
attempt to open /lib64/libcudart_static.a failed
attempt to open /usr/lib64/libcudart_static.so failed
attempt to open /usr/lib64/libcudart_static.a failed
attempt to open /usr/local/lib/libcudart_static.so failed
attempt to open /usr/local/lib/libcudart_static.a failed
attempt to open /lib/libcudart_static.so failed
attempt to open /lib/libcudart_static.a failed
attempt to open /usr/lib/libcudart_static.so failed
attempt to open /usr/lib/libcudart_static.a failed
attempt to open /usr/x86_64-linux-gnu/lib64/libcudart_static.so failed
attempt to open /usr/x86_64-linux-gnu/lib64/libcudart_static.a failed
attempt to open /usr/x86_64-linux-gnu/lib/libcudart_static.so failed
attempt to open /usr/x86_64-linux-gnu/lib/libcudart_static.a failed
ld: cannot find -lcudart_static
attempt to open /usr/local/lib/x86_64-linux-gnu/libcudart_static.so failed
attempt to open /usr/local/lib/x86_64-linux-gnu/cudart_static.a failed
attempt to open /lib/x86_64-linux-gnu/libcudart_static.so failed
attempt to open /lib/x86_64-linux-gnu/cudart_static.a failed
attempt to open /usr/lib/x86_64-linux-gnu/libcudart_static.so failed
attempt to open /usr/lib/x86_64-linux-gnu/cudart_static.a failed
attempt to open /usr/lib/x86_64-linux-gnu64/libcudart_static.so failed
attempt to open /usr/lib/x86_64-linux-gnu64/cudart_static.a failed
attempt to open /usr/local/lib64/libcudart_static.so failed
attempt to open /usr/local/lib64/cudart_static.a failed
attempt to open /lib64/libcudart_static.so failed
attempt to open /lib64/cudart_static.a failed
attempt to open /usr/lib64/libcudart_static.so failed
attempt to open /usr/lib64/cudart_static.a failed
attempt to open /usr/local/lib/libcudart_static.so failed
attempt to open /usr/local/lib/cudart_static.a failed
attempt to open /lib/libcudart_static.so failed
attempt to open /lib/cudart_static.a failed
attempt to open /usr/lib/libcudart_static.so failed
attempt to open /usr/lib/cudart_static.a failed
attempt to open /usr/x86_64-linux-gnu/lib64/libcudart_static.so failed
attempt to open /usr/x86_64-linux-gnu/lib64/cudart_static.a failed
attempt to open /usr/x86_64-linux-gnu/lib/libcudart_static.so failed
attempt to open /usr/x86_64-linux-gnu/lib/cudart_static.a failed

Can someone help with this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

慕巷 2025-02-07 12:39:28

所以我找到了解决方案。显然,接头无法找到libcudart二进制。因此,用于找到其位置的方法:

find /usr/ -name libcudart_static*

获取其路径为:(

/usr/local/cuda-11.6/targets/x86_64-linux/lib/libcudart_static.a

对您来说可能有所不同)。

只是通过在编译命令中使用-l标志链接了此路径。
新命令:

clang++ axpy.cu -o exec --cuda-gpu-arch=sm_60 -L/usr/local/cuda -L/usr/local/cuda-11.6/targets/x86_64-linux/lib/ -lcudart_static -ldl -lrt -pthread

So I found a solution. Apparently the linker wasnt able to locate libcudart binary. So used find to get its location:

find /usr/ -name libcudart_static*

Got its path as:

/usr/local/cuda-11.6/targets/x86_64-linux/lib/libcudart_static.a

(might be different for you).

Just linked this path by using -L flag in the compilation command.
New command:

clang++ axpy.cu -o exec --cuda-gpu-arch=sm_60 -L/usr/local/cuda -L/usr/local/cuda-11.6/targets/x86_64-linux/lib/ -lcudart_static -ldl -lrt -pthread
薄凉少年不暖心 2025-02-07 12:39:28

我个人认为链接无法找到“ LIB”文件夹。在x86_64体系结构中,您必须查找lib64。
因此,您的命令看起来如下:

clang++ axpy.cu -o exec --cuda-gpu-arch=sm_60 -L/usr/local/cuda/lib64 -lcudart_static -ldl -lrt -pthread

在您的答案中,链接器找不到名为“ lib”的文件夹。因此,您需要将链接指向x86_64_lix库。这是一个不必要的步骤(根据我的说法)。

I personally think that the linked is unable to find the "lib" folder. In X86_64 architecture, you must look for lib64.
So your command will look like the following:

clang++ axpy.cu -o exec --cuda-gpu-arch=sm_60 -L/usr/local/cuda/lib64 -lcudart_static -ldl -lrt -pthread

In your answer, the linker could not find the folder named "lib". Hence, you needed to point the linker to the X86_64_lix library. That is an unnecessary step (according to me).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文