I'm trying to help build a Ruby wrapper around Tensorflow using Swig. Currently, I'm stuck at making a shared build, .so
, and exposing its C/C++ headers to Ruby. So the question is: How do I build a libtensorflow.so
shared build including the full Tensorflow library so it's available as a shared library on OSX El Capitan (note: /usr/lib/
is read-only on El Capitan)?
Background
In this ruby-tensorflow project, I need to package a Tensorflow .bundle
file, but whenever I irb -Ilib -rtensorflow
or try to run the specs rspec
, I get and errors that the basic numeric types are not defined, but they are clearly defined here.
I'm guessing this happens because my .so
-file was not created properly or something is not linked as it should. C++/Swig/Bazel are not my strong sides, I'd like to focus on learning Tensorflow and building a good wrapper in Ruby, but I'm pretty stuck at this point getting to that fun part!
What I've done:
git clone --recurse-submodules https://github.com/tensorflow/tensorflow
cd tensorflow
bazel build //tensorflow:libtensorflow.so
(wait 10-15min on my machine)- Copied the generated
libtensorflow.so
(166.6 MB) to the/ext
-folder - Run the
ruby extconf.rb
,make
, andmake install
described in the project - Run
rspec
In desperation, I've also gone through the official installation from source several times, but I don't know if that, the last sudo pip install /tmp/tensorflow_pkg/tensorflow-0.9.0-py2-none-any.whl
-step even creates a shared build or just exposes a Python interface.
The guy, Arafat, who made the original repository and made the instructions that I've followed, says his libtensorflow.so
is 4.5 GB on his Linux machine – so over 20X the size of the shared build on my OSX machine. UPDATE1: he says his libtensorflow.so
-build is 302.2 MB, 4.5GB was the size of the entire tensorflow folder.
Any help or alternative approaches are very appreciated!