centos编译tensorflow

安装好编译工具后,我们使用git将tf的代码clone到服务器。

1. 编译配置

然后进入 tensorflow的目录。

运行configure文件:

./configure,根据个人的需要进行tf编译的配置。这里要求系统需要 预装python 和c++,这里做好是使用python3.x,2.7编译会失败

如果没有请进行安装:

yum install gcc-c++ libstdc++-devel

2. 编译

bazel build -c opt --verbose_failures  --jvmopt="-server -Xms1024m" //tensorflow/tools/pip_package:build_pip_package

会遇到很多的错误,有很多依赖库没安装会导致编译错误,需要进行安装

依赖的python库有numpy,keras

依赖的工具有:patch

编译完成了

INFO: Analysed target //tensorflow/tools/pip_package:build_pip_package (0 packages loaded, 0 targets configured).

INFO: Found 1 target...

Target //tensorflow/tools/pip_package:build_pip_package up-to-date:

  bazel-bin/tensorflow/tools/pip_package/build_pip_package

INFO: Elapsed time: 18.080s, Critical Path: 4.67s, Remote (0.00% of the time): [queue: 0.00%, setup: 0.00%, process: 0.00%]

INFO: 26 processes: 26 local.

INFO: Build completed successfully, 44 total actions

3. 构建安装包,可以指定想要存放安装包的位置

bazel-bin/tensorflow/tools/pip_package/build_pip_package  pack_path

这里我们放到tf源码的tmp目录下

bazel-bin/tensorflow/tools/pip_package/build_pip_package  /data/tensorflow/tmp/

完成后可以看到wheel安装包

使用pip安装既可;

pip install tensorflow-1.12.0rc0-cp36-cp36m-linux_x86_64.whl

然后我们就可以测试:

import tensorflow as tf

hello = tf.constant("Hello, TensorFlow!")

sess = tf.Session()

print(sess.run(hello))

错误集锦:

1.ERROR: /data/tensorflow/tensorflow/lite/toco/python/BUILD:15:1: C++ compilation of rule '//tensorflow/lite/toco/python:toco_python_api' failed (Exit 1): gcc failed: error executing command

  (cd /root/.cache/bazel/_bazel_root/48b0697df5815d95b49fd98c3083955b/execroot/org_tensorflow && \

  exec env -  ......

编译输出如下:

\/root/.cache/bazel/_bazel_root/48b0697df5815d95b49fd98c3083955b/external/protobuf_archive/BUILD:640:1: C++ compilation of rule '@protobuf_archive//:python/google/protobuf/pyext/_message.so' failed (Exit 1)

external/protobuf_archive/python/google/protobuf/pyext/descriptor.cc:33:20: fatal error: Python.h: No such file or directory

#include <Python.h>

#include "Python.h"

解决: 安装python-devel

sudo yum -y install python-devel

但是以上似乎并不能解决问题:我们换成如下命令,打印详细的编译日志:

bazel build -c opt --verbose_failures //tensorflow/tools/pip_package:build_pip_package

ERROR: /data/tensorflow/tensorflow/lite/toco/python/BUILD:15:1: C++ compilation of rule '//tensorflow/lite/toco/python:toco_python_api' failed (Exit 1): gcc failed: error executing command

  (cd /root/.cache/bazel/_bazel_root/48b0697df5815d95b49fd98c3083955b/execroot/org_tensorflow && \

  exec env - \

    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/bin:/root/bin \

    PWD=/proc/self/cwd \

  /usr/bin/gcc -U_FORTIFY_SOURCE -fstack-protector -Wall -B/usr/bin -B/usr/bin -Wunused-but-set-parameter -Wno-free-nonheap-object -fno-omit-frame-pointer -g0 -O2 '-D_FORTIFY_SOURCE=1' -DNDEBUG -ffunction-sections -fdata-sections '-std=c++0x' -MD -MF bazel-out/host/bin/tensorflow/lite/toco/python/_objs/toco_python_api/toco_python_api.pic.d '-frandom-seed=bazel-out/host/bin/tensorflow/lite/toco/python/_objs/toco_python_api/toco_python_api.pic.o' -fPIC -D__CLANG_SUPPORT_DYN_ANNOTATION__ -DEIGEN_MPL2_ONLY '-DEIGEN_MAX_ALIGN_BYTES=64' '-DEIGEN_HAS_TYPE_TRAITS=0' -DTF_USE_SNAPPY -iquote . -iquote bazel-out/host/genfiles -iquote bazel-out/host/bin -iquote external/local_config_python -iquote bazel-out/host/genfiles/external/local_config_python -iquote bazel-out/host/bin/external/local_config_python -iquote external/bazel_tools -iquote bazel-out/host/genfiles/external/bazel_tools -iquote bazel-out/host/bin/external/bazel_tools -iquote external/com_google_absl -iquote bazel-out/host/genfiles/external/com_google_absl -iquote bazel-out/host/bin/external/com_google_absl -iquote external/nsync -iquote bazel-out/host/genfiles/external/nsync -iquote bazel-out/host/bin/external/nsync -iquote external/eigen_archive -iquote bazel-out/host/genfiles/external/eigen_archive -iquote bazel-out/host/bin/external/eigen_archive -iquote external/local_config_sycl -iquote bazel-out/host/genfiles/external/local_config_sycl -iquote bazel-out/host/bin/external/local_config_sycl -iquote external/gif_archive -iquote bazel-out/host/genfiles/external/gif_archive -iquote bazel-out/host/bin/external/gif_archive -iquote external/jpeg -iquote bazel-out/host/genfiles/external/jpeg -iquote bazel-out/host/bin/external/jpeg -iquote external/protobuf_archive -iquote bazel-out/host/genfiles/external/protobuf_archive -iquote bazel-out/host/bin/external/protobuf_archive -iquote external/com_googlesource_code_re2 -iquote bazel-out/host/genfiles/external/com_googlesource_code_re2 -iquote bazel-out/host/bin/external/com_googlesource_code_re2 -iquote external/farmhash_archive -iquote bazel-out/host/genfiles/external/farmhash_archive -iquote bazel-out/host/bin/external/farmhash_archive -iquote external/fft2d -iquote bazel-out/host/genfiles/external/fft2d -iquote bazel-out/host/bin/external/fft2d -iquote external/highwayhash -iquote bazel-out/host/genfiles/external/highwayhash -iquote bazel-out/host/bin/external/highwayhash -iquote external/zlib_archive -iquote bazel-out/host/genfiles/external/zlib_archive -iquote bazel-out/host/bin/external/zlib_archive -iquote external/gemmlowp -iquote bazel-out/host/genfiles/external/gemmlowp -iquote bazel-out/host/bin/external/gemmlowp -iquote external/arm_neon_2_x86_sse -iquote bazel-out/host/genfiles/external/arm_neon_2_x86_sse -iquote bazel-out/host/bin/external/arm_neon_2_x86_sse -iquote external/flatbuffers -iquote bazel-out/host/genfiles/external/flatbuffers -iquote bazel-out/host/bin/external/flatbuffers -isystem external/local_config_python/python_include -isystem bazel-out/host/genfiles/external/local_config_python/python_include -isystem bazel-out/host/bin/external/local_config_python/python_include -isystem external/nsync/public -isystem bazel-out/host/genfiles/external/nsync/public -isystem bazel-out/host/bin/external/nsync/public -isystem external/eigen_archive -isystem bazel-out/host/genfiles/external/eigen_archive -isystem bazel-out/host/bin/external/eigen_archive -isystem external/gif_archive/lib -isystem bazel-out/host/genfiles/external/gif_archive/lib -isystem bazel-out/host/bin/external/gif_archive/lib -isystem external/protobuf_archive/src -isystem bazel-out/host/genfiles/external/protobuf_archive/src -isystem bazel-out/host/bin/external/protobuf_archive/src -isystem external/farmhash_archive/src -isystem bazel-out/host/genfiles/external/farmhash_archive/src -isystem bazel-out/host/bin/external/farmhash_archive/src -isystem external/zlib_archive -isystem bazel-out/host/genfiles/external/zlib_archive -isystem bazel-out/host/bin/external/zlib_archive -isystem tensorflow/lite/schema -isystem bazel-out/host/genfiles/tensorflow/lite/schema -isystem bazel-out/host/bin/tensorflow/lite/schema -isystem external/flatbuffers/include -isystem bazel-out/host/genfiles/external/flatbuffers/include -isystem bazel-out/host/bin/external/flatbuffers/include -g0 -g0 -fno-canonical-system-headers -Wno-builtin-macro-redefined '-D__DATE__="redacted"' '-D__TIMESTAMP__="redacted"' '-D__TIME__="redacted"' -c tensorflow/lite/toco/python/toco_python_api.cc -o bazel-out/host/bin/tensorflow/lite/toco/python/_objs/toco_python_api/toco_python_api.pic.o)

In file included from tensorflow/lite/toco/python/toco_python_api.cc:20:0:

./tensorflow/lite/toco/python/toco_python_api.h:18:20: fatal error: Python.h: No such file or directory

#include <Python.h>

以上问题可能是由于内存不足引起的,我们增加swap空间:

Ubuntu下:

# 生成swap镜像文件

sudo dd if=/dev/zero of=/mnt/512Mb.swap bs=1M count=512

# 对该镜像文件格式化

sudo mkswap /mnt/512Mb.swap

# 挂载该镜像文件

sudo swapon /mnt/512Mb.swap

centos:

. 检查是否配置swap:

swapon -s

或者free -m

total        used        free      shared  buff/cache  available

Mem:          15885        1539      13593          8        752      14020

Swap:            0          0          0

. 查看系统存储

df -h

尝试指定jvm参数:

bazel build -c opt --verbose_failures  --jvmopt="-server -Xms1024m" //tensorflow/tools/pip_package:build_pip_package

同样会出现该错误,接下来我们换成python3.6 试一下,使用anaconda创建一个python3.6的环境,激活环境并重新运行上述命令:

2.  from tensorflow.python.keras.preprocessing.sequence import _remove_long_seq

  File "/root/.cache/bazel/_bazel_root/48b0697df5815d95b49fd98c3083955b/execroot/org_tensorflow/bazel-out/host/bin/tensorflow/create_tensorflow.python_api_1_tf_python_api_gen_v1.runfiles/org_tensorflow/tensorflow/python/keras/preprocessing/__init__.py", line 21, in <module>

    import keras_preprocessing

ModuleNotFoundError: No module named 'keras_preprocessing'

尝试安装keras,pip install keras,重新开始编译

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,826评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,968评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,234评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,562评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,611评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,482评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,271评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,166评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,608评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,814评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,926评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,644评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,249评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,866评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,991评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,063评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,871评论 2 354