Mac升级为Sierra后安装caffe的问题

三年前的Mac到手后一直懒得做更新,主要是因为系统升级后一些有依赖的软件都需要更新,有时还挺容易出问题。为了安全稳定起见,OSX 10.9系统就被我用了三年。但是,这么久不更新实在跟不上潮流了,最近想安装TensorFlow,结果我这么旧的系统被它鄙视并且拒绝了,只好趁着假期把系统更新一下。结果一更新,原来的caffe就用不了,编译过程出现了些问题,本博文记录了这些问题和对应的解决方案。

更新后,系统及相关软件的版本为:
OSX 10.12.4 (Sierra)
Xcode 8.3.2
Cuda 8.0.61
cuDNN 5.0
Matlab2016b

caffe具体的安装过程见《深度学习框架Caffe在Mac上的安装和测试》,这里使用的是基于Anaconda的安装。Xcode和Cuda都是最新的,但是编译caffe的过程中发现cuda 8.0不支持Xcode 8.3,报错为:

nvcc fatal : The version ('80300') of the host compiler ('Apple clang') is not supported

通过搜索发现,cuda 8.0是支持Xcode 8.2的,于是将Xcode降为8.2版本。解决步骤为:
1, 登录apple开发者网站:https://developer.apple.com/downloads/
2, 下载命令行工具: Command Line Tools (macOS 10.12) for Xcode 8.2
3, 安装Command Line Tools
4, 将Xcode改为命令行工具对于的8.2版本,运行

sudo xcode-select --switch /Library/Developer/CommandLineTools

5, 查看clang的版本, 为8.0.0

$ clang --version
Apple LLVM version 8.0.0 (clang-800.0.42.1)
Target: x86_64-apple-darwin16.5.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin

于是使用make重新编译caffe即可。
运行 make, make test都没有问题,但是到了make runtest这一步,又出现以下问题:

$ make runtest
.build_release/tools/caffe
dyld: Library not loaded: @rpath/./libhdf5_hl.10.dylib
  Referenced from:.build_release/tools/caffe
  Reason: image not found

这个问题的原因是caffe没有成功连接到Anaconda安装的libhdf5_hl.10.dylib。解决办法如下:
1, 用otool查看caffe的连接库。

$ cd build/tools
$ otool -L caffe | grep rpath
    @rpath/libcaffe.so.1.0.0-rc3 (compatibility version 0.0.0, current version 0.0.0)
    @rpath/libcudart.8.0.dylib (compatibility version 0.0.0, current version 8.0.61)
    @rpath/libcublas.8.0.dylib (compatibility version 0.0.0, current version 8.0.61)
    @rpath/libcurand.8.0.dylib (compatibility version 0.0.0, current version 8.0.61)
    @rpath/libhdf5_hl.10.dylib (compatibility version 12.0.0, current version 12.0.0)
    @rpath/libhdf5.10.dylib (compatibility version 13.0.0, current version 13.0.0)
    @rpath/libcudnn.5.dylib (compatibility version 0.0.0, current version 5.0.5)
    @rpath/libpython2.7.dylib (compatibility version 2.7.0, current version 2.7.0)

可以看到caffe连接到了@rpath/libhdf5_hl.10.dylib 而不是Anaconda中的hdf5。
2, 使用install_name_tool -change 重新设置hdf5的连接

$ install_name_tool -change "@rpath/libhdf5_hl.10.dylib" "/Users/taigw/anaconda/lib/libhdf5_hl.10.dylib" caffe
install_name_tool -change "@rpath/libhdf5.10.dylib" "/Users/taigw/anaconda/lib/libhdf5.10.dylib" caffe

3, 对libcaffe.so和test_all.testbin做同样的修改

$ cd ../lib
$ otool -L libcaffe.so | grep rpath
$ install_name_tool -change "@rpath/libhdf5.10.dylib" "/Users/taigw/anaconda/lib/libhdf5.10.dylib" libcaffe.so
$ install_name_tool -change "@rpath/libhdf5_hl.10.dylib" "/Users/taigw/anaconda/lib/libhdf5_hl.10.dylib" libcaffe.so
$ cd ../test
$ otool -L test_all.testbin | grep rpath
$ install_name_tool -change "@rpath/libhdf5_hl.10.dylib" "/Users/taigw/anaconda/lib/libhdf5_hl.10.dylib" test_all.testbin
$ install_name_tool -change "@rpath/libhdf5.10.dylib" "/Users/taigw/anaconda/lib/libhdf5.10.dylib" test_all.testbin

再次运行make runtest就能通过了。

之后依次运行make pycaffe和make matcaffe,在make matcaffe完成后在matlab中调用caffe时出现了和上面类似的错误,说caffe_mexmaci64找不到@rpath/./libhdf5_hl.10.dylib,解决办法如下:

在caffe安装的更目录下,运行:

$ cd matlab/+caffe/private/
$ install_name_tool -change "@rpath/libhdf5_hl.10.dylib" "/Users/taigw/anaconda/lib/libhdf5_hl.10.dylib" caffe_.mexmaci64
$ install_name_tool -change "@rpath/libhdf5.10.dylib" "/Users/taigw/anaconda/lib/libhdf5.10.dylib" caffe_.mexmaci64

问题得到顺利解决。于是可以在新系统上一边玩caffe一边玩TensorFlow了。

Vivado2023是一款集成开发环境软件,用于设计和验证FPGA(现场可编程门阵列)和可编程逻辑器件。对于使用Vivado2023的用户来说,license是必不可少的。 Vivado2023的license是一种许可证,用于授权用户合法使用该软件。许可证分为多种类型,包括评估许可证、开发许可证和节点许可证等。每种许可证都有不同的使用条件和功能。 评估许可证是免费提供的,让用户可以在一段时间内试用Vivado2023的全部功能。用户可以使用这个许可证来了解软件的性能和特点,对于初学者和小规模项目来说是一个很好的选择。但是,使用评估许可证的用户在使用期限过后需要购买正式的许可证才能继续使用软件。 开发许可证是付费的,可以永久使用Vivado2023的全部功能。这种许可证适用于需要长期使用Vivado2023进行开发的用户,通常是专业的FPGA设计师或工程师。购买开发许可证可以享受Vivado2023的技术支持和更新服务,确保软件始终保持最新的版本和功能。 节点许可证是用于多设备或分布式设计的许可证,可以在多个计算机上安装Vivado2023,并共享使用。节点许可证适用于大规模项目或需要多个处理节点进行设计的用户,可以提高工作效率和资源利用率。 总之,Vivado2023 license是用户在使用Vivado2023时必须考虑的问题。用户可以根据自己的需求选择合适的许可证类型,以便获取最佳的软件使用体验。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值