Mac源码编译安装tensorflow

Mac源码编译安装tensorflow

1. 安装 Bazel

注意版本

macOS CPU
版本 Python 版本 编译器 编译工具
tensorflow-1.13.1 2.7、3.3-3.6 XCode 中的 Clang Bazel 0.19.2
tensorflow-1.12.0 2.7、3.3-3.6 XCode 中的 Clang Bazel 0.15.0
tensorflow-1.11.0 2.7、3.3-3.6 XCode 中的 Clang Bazel 0.15.0
tensorflow-1.10.0 2.7、3.3-3.6 XCode 中的 Clang Bazel 0.15.0
tensorflow-1.9.0 2.7、3.3-3.6 XCode 中的 Clang Bazel 0.11.0
tensorflow-1.8.0 2.7、3.3-3.6 XCode 中的 Clang Bazel 0.10.1
tensorflow-1.7.0 2.7、3.3-3.6 XCode 中的 Clang Bazel 0.10.1
tensorflow-1.6.0 2.7、3.3-3.6 XCode 中的 Clang Bazel 0.8.1
tensorflow-1.5.0 2.7、3.3-3.6 XCode 中的 Clang Bazel 0.8.1
tensorflow-1.4.0 2.7、3.3-3.6 XCode 中的 Clang Bazel 0.5.4
tensorflow-1.3.0 2.7、3.3-3.6 XCode 中的 Clang Bazel 0.4.5
tensorflow-1.2.0 2.7、3.3-3.6 XCode 中的 Clang Bazel 0.4.5
tensorflow-1.1.0 2.7、3.3-3.6 XCode 中的 Clang Bazel 0.4.2
tensorflow-1.0.0 2.7、3.3-3.6 XCode 中的 Clang Bazel 0.4.2
1
2
# 通过如下bazel的仓库连接下载对应版本的安装工具,我们这里使用的是0.15.0的
https://github.com/bazelbuild/bazel/releases
1
2
3
# 其中参数--user是为了个人用户安装
$ chmod +x bazel-<version>-installer-darwin-x86_64.sh
$ ./bazel-<version>-installer-darwin-x86_64.sh --user

2. 下载tf源码

1
2
git clone https://github.com/tensorflow/tensorflow.git
cd tensorflow

其中–recurse-submodules 参数是必须的, 用于获取 TesorFlow 依赖的 protobuf 库.

1
git checkout branch_name  # r1.9, r1.10, etc.
1
./configure

使用 bazel 构建仅支持 CPU 的 TensorFlow 软件包编译器:

1
bazel build --config=opt //tensorflow/tools/pip_package:build_pip_package

编译过程出现两处错误:

  • Xcode version must be specified to use an Apple CROSSTOOL” on OSX High Sierra

解决方法:

1
2
3
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
sudo xcodebuild -license
bazel clean --expunge
  • 找不到module enum

注意要安pip install enum34这个包不是enum。

3. 生成pip安装包,.whl文件:

bazel build 命令会创建一个名为 build_pip_package 的可执行文件,此文件是用于编译 pip 软件包的程序。请如下所示地运行该可执行文件,以在 /tmp/tensorflow_pkg 目录中编译 .whl 软件包

1
sudo bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg

要从 master 编译,加上 --nightly_flag 获取正确的依赖项:

1
sudo ./bazel-bin/tensorflow/tools/pip_package/build_pip_package --nightly_flag /tmp/tensorflow_pkg

4. 安装软件包

生成的 .whl 文件的文件名取决于 TensorFlow 版本和您的平台。例如,使用 pip install 安装软件包:

1
pip install /tmp/tensorflow_pkg/tensorflow-version-tags.whl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class BTNode{
BTNode* left;
BTNode* right;
int val;
}
static int max = 0;

int highofT(BTNode *T){
if(T == NULL) return 0;
int lh = highofT(T->left);
int rh = highofT(T->right);
if(lh>rh) max = lh;
else max = rh;
return 1;
}