【问题描述】
鲲鹏环境下编译lotus 1.9.0在执行FFI_BUILD_FROM_SOURCE=1 make all编译过程报undefined reference to `nvrtcGetErrorString'错误,详细报错如下:
go build -ldflags="-X=github.com/filecoin-project/lotus/build.CurrentCommit=+git.ada7f97ba.dirty" -o lotus ./cmd/lotus
# github.com/filecoin-project/filecoin-ffi/generated
extern/filecoin-ffi/generated/../libfilcrypto.a(poseidoncuda.o): In function `nvrtc_api_succeed.part.1.constprop.3':
poseidoncuda.c:(.text.unlikely.nvrtc_api_succeed.part.1.constprop.3+0x1c): undefined reference to `nvrtcGetErrorString'
extern/filecoin-ffi/generated/../libfilcrypto.a(poseidoncuda.o): In function `Poseidon_CudaLoadKernel':
poseidoncuda.c:(.text.Poseidon_CudaLoadKernel+0x184): undefined reference to `nvrtcCreateProgram'
poseidoncuda.c:(.text.Poseidon_CudaLoadKernel+0x228): undefined reference to `nvrtcCompileProgram'
poseidoncuda.c:(.text.Poseidon_CudaLoadKernel+0x23c): undefined reference to `nvrtcGetPTXSize'
poseidoncuda.c:(.text.Poseidon_CudaLoadKernel+0x258): undefined reference to `nvrtcGetPTX'
poseidoncuda.c:(.text.Poseidon_CudaLoadKernel+0x264): undefined reference to `nvrtcDestroyProgram'
poseidoncuda.c:(.text.Poseidon_CudaLoadKernel+0x39c): undefined reference to `nvrtcGetProgramLogSize'
poseidoncuda.c:(.text.Poseidon_CudaLoadKernel+0x3dc): undefined reference to `nvrtcGetProgramLog'
extern/filecoin-ffi/generated/../libfilcrypto.a(bellpersoncuda.o): In function `nvrtc_api_succeed.part.1.constprop.3':
bellpersoncuda.c:(.text.unlikely.nvrtc_api_succeed.part.1.constprop.3+0x1c): undefined reference to `nvrtcGetErrorString'
extern/filecoin-ffi/generated/../libfilcrypto.a(bellpersoncuda.o): In function `CudaLoadKernel':
bellpersoncuda.c:(.text.CudaLoadKernel+0x170): undefined reference to `nvrtcCreateProgram'
bellpersoncuda.c:(.text.CudaLoadKernel+0x214): undefined reference to `nvrtcCompileProgram'
bellpersoncuda.c:(.text.CudaLoadKernel+0x228): undefined reference to `nvrtcGetPTXSize'
bellpersoncuda.c:(.text.CudaLoadKernel+0x244): undefined reference to `nvrtcGetPTX'
bellpersoncuda.c:(.text.CudaLoadKernel+0x250): undefined reference to `nvrtcDestroyProgram'
bellpersoncuda.c:(.text.CudaLoadKernel+0x368): undefined reference to `nvrtcGetProgramLogSize'
bellpersoncuda.c:(.text.CudaLoadKernel+0x3a8): undefined reference to `nvrtcGetProgramLog'
collect2: error: ld returned 1 exit status
Makefile:85: recipe for target 'lotus' failed
make: *** [lotus] Error 2
【解决方法】
1、查找libnvrtc.so库
find / -name "libnvrtc*"
/usr/lib/libnvrtc.so
/usr/lib/libnvrtc.so.11.1
/usr/lib/libnvrtc-builtins.so.11.1
/usr/local/cuda-11.1/targets/sbsa-linux/lib/libnvrtc-builtins.so.11.1.74
/usr/local/cuda-11.1/targets/sbsa-linux/lib/libnvrtc.so.11.1.74
/usr/local/cuda-11.1/targets/sbsa-linux/lib/libnvrtc.so
/usr/local/cuda-11.1/targets/sbsa-linux/lib/libnvrtc.so.11.1
/usr/local/cuda-11.1/targets/sbsa-linux/lib/libnvrtc-builtins.so
/usr/local/cuda-11.1/targets/sbsa-linux/lib/stubs/libnvrtc.so
/usr/local/cuda-11.1/targets/sbsa-linux/lib/libnvrtc-builtins.so.11.1
/home/libnvrtc.so.11.1.74
2、将/usr/lib/libnvrtc.so链接到/usr/local/cuda-11.1/targets/sbsa-linux/lib/libnvrtc.so.11.1.74
ln -s /usr/local/cuda-11.1/targets/sbsa-linux/lib/libnvrtc.so.11.1.74 /usr/lib/libnvrtc.so
3、再次执行FFI_BUILD_FROM_SOURCE=1 make all lotus-bench编译即可
rm -f lotus
go build -ldflags="-X=github.com/filecoin-project/lotus/build.CurrentCommit=+git.ada7f97ba.dirty" -o lotus ./cmd/lotus
go run github.com/GeertJohan/go.rice/rice append --exec lotus -i ./build
rm -f lotus-miner
go build -ldflags="-X=github.com/filecoin-project/lotus/build.CurrentCommit=+git.ada7f97ba.dirty" -o lotus-miner ./cmd/lotus-storage-miner
go run github.com/GeertJohan/go.rice/rice append --exec lotus-miner -i ./build
rm -f lotus-worker
go build -ldflags="-X=github.com/filecoin-project/lotus/build.CurrentCommit=+git.ada7f97ba.dirty" -o lotus-worker ./cmd/lotus-seal-worker
go run github.com/GeertJohan/go.rice/rice append --exec lotus-worker -i ./build
rm -f lotus-bench
go build -o lotus-bench ./cmd/lotus-bench
go run github.com/GeertJohan/go.rice/rice append --exec lotus-bench -i ./build
【问题描述】
鲲鹏环境下编译lotus 1.9.0在执行FFI_BUILD_FROM_SOURCE=1 make all编译过程报undefined reference to `nvrtcGetErrorString'错误,详细报错如下:
go build -ldflags="-X=github.com/filecoin-project/lotus/build.CurrentCommit=+git.ada7f97ba.dirty" -o lotus ./cmd/lotus
# github.com/filecoin-project/filecoin-ffi/generated
extern/filecoin-ffi/generated/../libfilcrypto.a(poseidoncuda.o): In function `nvrtc_api_succeed.part.1.constprop.3':
poseidoncuda.c:(.text.unlikely.nvrtc_api_succeed.part.1.constprop.3+0x1c): undefined reference to `nvrtcGetErrorString'
extern/filecoin-ffi/generated/../libfilcrypto.a(poseidoncuda.o): In function `Poseidon_CudaLoadKernel':
poseidoncuda.c:(.text.Poseidon_CudaLoadKernel+0x184): undefined reference to `nvrtcCreateProgram'
poseidoncuda.c:(.text.Poseidon_CudaLoadKernel+0x228): undefined reference to `nvrtcCompileProgram'
poseidoncuda.c:(.text.Poseidon_CudaLoadKernel+0x23c): undefined reference to `nvrtcGetPTXSize'
poseidoncuda.c:(.text.Poseidon_CudaLoadKernel+0x258): undefined reference to `nvrtcGetPTX'
poseidoncuda.c:(.text.Poseidon_CudaLoadKernel+0x264): undefined reference to `nvrtcDestroyProgram'
poseidoncuda.c:(.text.Poseidon_CudaLoadKernel+0x39c): undefined reference to `nvrtcGetProgramLogSize'
poseidoncuda.c:(.text.Poseidon_CudaLoadKernel+0x3dc): undefined reference to `nvrtcGetProgramLog'
extern/filecoin-ffi/generated/../libfilcrypto.a(bellpersoncuda.o): In function `nvrtc_api_succeed.part.1.constprop.3':
bellpersoncuda.c:(.text.unlikely.nvrtc_api_succeed.part.1.constprop.3+0x1c): undefined reference to `nvrtcGetErrorString'
extern/filecoin-ffi/generated/../libfilcrypto.a(bellpersoncuda.o): In function `CudaLoadKernel':
bellpersoncuda.c:(.text.CudaLoadKernel+0x170): undefined reference to `nvrtcCreateProgram'
bellpersoncuda.c:(.text.CudaLoadKernel+0x214): undefined reference to `nvrtcCompileProgram'
bellpersoncuda.c:(.text.CudaLoadKernel+0x228): undefined reference to `nvrtcGetPTXSize'
bellpersoncuda.c:(.text.CudaLoadKernel+0x244): undefined reference to `nvrtcGetPTX'
bellpersoncuda.c:(.text.CudaLoadKernel+0x250): undefined reference to `nvrtcDestroyProgram'
bellpersoncuda.c:(.text.CudaLoadKernel+0x368): undefined reference to `nvrtcGetProgramLogSize'
bellpersoncuda.c:(.text.CudaLoadKernel+0x3a8): undefined reference to `nvrtcGetProgramLog'
collect2: error: ld returned 1 exit status
Makefile:85: recipe for target 'lotus' failed
make: *** [lotus] Error 2
【解决方法】
1、查找libnvrtc.so库
find / -name "libnvrtc*"
/usr/lib/libnvrtc.so
/usr/lib/libnvrtc.so.11.1
/usr/lib/libnvrtc-builtins.so.11.1
/usr/local/cuda-11.1/targets/sbsa-linux/lib/libnvrtc-builtins.so.11.1.74
/usr/local/cuda-11.1/targets/sbsa-linux/lib/libnvrtc.so.11.1.74
/usr/local/cuda-11.1/targets/sbsa-linux/lib/libnvrtc.so
/usr/local/cuda-11.1/targets/sbsa-linux/lib/libnvrtc.so.11.1
/usr/local/cuda-11.1/targets/sbsa-linux/lib/libnvrtc-builtins.so
/usr/local/cuda-11.1/targets/sbsa-linux/lib/stubs/libnvrtc.so
/usr/local/cuda-11.1/targets/sbsa-linux/lib/libnvrtc-builtins.so.11.1
/home/libnvrtc.so.11.1.74
2、将/usr/lib/libnvrtc.so链接到/usr/local/cuda-11.1/targets/sbsa-linux/lib/libnvrtc.so.11.1.74
ln -s /usr/local/cuda-11.1/targets/sbsa-linux/lib/libnvrtc.so.11.1.74 /usr/lib/libnvrtc.so
3、再次执行FFI_BUILD_FROM_SOURCE=1 make all lotus-bench编译即可
rm -f lotus
go build -ldflags="-X=github.com/filecoin-project/lotus/build.CurrentCommit=+git.ada7f97ba.dirty" -o lotus ./cmd/lotus
go run github.com/GeertJohan/go.rice/rice append --exec lotus -i ./build
rm -f lotus-miner
go build -ldflags="-X=github.com/filecoin-project/lotus/build.CurrentCommit=+git.ada7f97ba.dirty" -o lotus-miner ./cmd/lotus-storage-miner
go run github.com/GeertJohan/go.rice/rice append --exec lotus-miner -i ./build
rm -f lotus-worker
go build -ldflags="-X=github.com/filecoin-project/lotus/build.CurrentCommit=+git.ada7f97ba.dirty" -o lotus-worker ./cmd/lotus-seal-worker
go run github.com/GeertJohan/go.rice/rice append --exec lotus-worker -i ./build
rm -f lotus-bench
go build -o lotus-bench ./cmd/lotus-bench
go run github.com/GeertJohan/go.rice/rice append --exec lotus-bench -i ./build