为什么clang找不到lnvrtc?
Why can't clang find lnvrtc?
我正在尝试在 high Sierra 上安装 CUDA 9.2 运行ning。
我完成了安装程序的使用,并尝试构建示例。
当我 运行 "make" 时,一些示例构建没有问题,但是当我尝试构建它们时,出现以下错误:
clang++ -rpath /Developer/NVIDIA/CUDA-9.2/lib -o clock_nvrtc clock.o -lnvrtc
ld: library not found for -lnvrtc
如果我去:
cd /Developer/NVIDIA/CUDA-9.2/lib
我可以看到我有文件:
libnvrtc-builtins.9.2.dylib
libnvrtc-builtins.dylib
libnvrtc.9.2.dylib
libnvrtc.dylib
所以我想一定是有某种环境变量/路径问题。
我的bash_profile文件是:
export PATH=/Developer/NVIDIA/CUDA-9.2/bin${PATH:+:${PATH}}
export DYLD_LIBRARY_PATH=/Developer/NVIDIA/CUDA9.2/lib${DYLD_LIBRARY_PATH:+:${DYLD_LIBRARY_PATH}}
在新终端中 运行ning printenv 的输出是:
TERM_PROGRAM=Apple_Terminal
SHELL=/bin/bash
TERM=xterm-256color
TMPDIR=/var/folders/gw/70bmspxd74j7fkfbvms8x22m0000gn/T/
Apple_PubSub_Socket_Render=/private/tmp/com.apple.launchd.kptV0WXZcy/Render
TERM_PROGRAM_VERSION=404
TERM_SESSION_ID=47F46280-AEC0-4E23-8632-F6AA0422B14F
USER=kaizer
SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.bhLK0n0mY9/Listeners
PATH=/Developer/NVIDIA/CUDA-9.2/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
PWD=/Users/kaizer
XPC_FLAGS=0x0
XPC_SERVICE_NAME=0
SHLVL=1
HOME=/Users/kaizer
LOGNAME=kaizer
LC_CTYPE=UTF-8
_=/usr/bin/printenv
运行宁echo "$DYLD_LIBRARY_PATH"
的输出:
/Developer/NVIDIA/CUDA9.2/lib
我还安装了 Xcode 命令行工具,并且正在使用 Xcode 9.2 和 High Sierra 10.13.6
我正在尝试按照此处的说明进行操作:
https://docs.nvidia.com/cuda/archive/9.2/cuda-installation-guide-mac-os-x/index.html#system-requirements
那么问题是什么?为什么 clang 看不到库?
OSX 的新版本默认启用系统完整性保护。这意味着设置 DYLD_LIBRARY_PATH 和 LD_LIBRARY_PATH 将没有任何效果。
我正在尝试在 high Sierra 上安装 CUDA 9.2 运行ning。 我完成了安装程序的使用,并尝试构建示例。 当我 运行 "make" 时,一些示例构建没有问题,但是当我尝试构建它们时,出现以下错误:
clang++ -rpath /Developer/NVIDIA/CUDA-9.2/lib -o clock_nvrtc clock.o -lnvrtc
ld: library not found for -lnvrtc
如果我去:
cd /Developer/NVIDIA/CUDA-9.2/lib
我可以看到我有文件:
libnvrtc-builtins.9.2.dylib
libnvrtc-builtins.dylib
libnvrtc.9.2.dylib
libnvrtc.dylib
所以我想一定是有某种环境变量/路径问题。
我的bash_profile文件是:
export PATH=/Developer/NVIDIA/CUDA-9.2/bin${PATH:+:${PATH}}
export DYLD_LIBRARY_PATH=/Developer/NVIDIA/CUDA9.2/lib${DYLD_LIBRARY_PATH:+:${DYLD_LIBRARY_PATH}}
在新终端中 运行ning printenv 的输出是:
TERM_PROGRAM=Apple_Terminal
SHELL=/bin/bash
TERM=xterm-256color
TMPDIR=/var/folders/gw/70bmspxd74j7fkfbvms8x22m0000gn/T/
Apple_PubSub_Socket_Render=/private/tmp/com.apple.launchd.kptV0WXZcy/Render
TERM_PROGRAM_VERSION=404
TERM_SESSION_ID=47F46280-AEC0-4E23-8632-F6AA0422B14F
USER=kaizer
SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.bhLK0n0mY9/Listeners
PATH=/Developer/NVIDIA/CUDA-9.2/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
PWD=/Users/kaizer
XPC_FLAGS=0x0
XPC_SERVICE_NAME=0
SHLVL=1
HOME=/Users/kaizer
LOGNAME=kaizer
LC_CTYPE=UTF-8
_=/usr/bin/printenv
运行宁echo "$DYLD_LIBRARY_PATH"
的输出:
/Developer/NVIDIA/CUDA9.2/lib
我还安装了 Xcode 命令行工具,并且正在使用 Xcode 9.2 和 High Sierra 10.13.6
我正在尝试按照此处的说明进行操作: https://docs.nvidia.com/cuda/archive/9.2/cuda-installation-guide-mac-os-x/index.html#system-requirements
那么问题是什么?为什么 clang 看不到库?
OSX 的新版本默认启用系统完整性保护。这意味着设置 DYLD_LIBRARY_PATH 和 LD_LIBRARY_PATH 将没有任何效果。