Install TensorFlow for C
TensorFlow provides a C API that can be used to build
bindings for other languages.
The API is defined in
c_api.h
and designed for simplicity and uniformity rather than convenience.
Nightly libtensorflow C packages
libtensorflow packages are built nightly and uploaded to GCS for all supported
platforms. They are uploaded to the
libtensorflow-nightly GCS bucket
and are indexed by operating system and date built. For MacOS and Linux shared
objects, there is a
script
that renames the .so files versioned to the current date copied into the
directory with the artifacts.
Supported Platforms
TensorFlow for C is supported on the following systems:
- Linux, 64-bit, x86
- macOS, Version 10.12.6 (Sierra) or higher
- Windows, 64-bit x86
Setup
Download and extract
| TensorFlow C library | URL |
|---|---|
| Linux | |
| Linux CPU only | https://storage.googleapis.com/tensorflow/versions/2.18.0/libtensorflow-cpu-linux-x86_64.tar.gz |
| Linux GPU support | https://storage.googleapis.com/tensorflow/versions/2.18.0/libtensorflow-gpu-linux-x86_64.tar.gz |
| macOS | |
| macOS CPU only | https://storage.googleapis.com/tensorflow/versions/2.16.2/libtensorflow-cpu-darwin-x86_64.tar.gz | macOS ARM64 CPU only | https://storage.googleapis.com/tensorflow/versions/2.18.0/libtensorflow-cpu-darwin-arm64.tar.gz |
| Windows | |
| Windows CPU only | https://storage.googleapis.com/tensorflow/versions/2.18.1/libtensorflow-cpu-windows-x86_64.zip |
| Windows GPU only | https://storage.googleapis.com/tensorflow/libtensorflow/libtensorflow-gpu-windows-x86_64-2.10.0.zip |
Extract the downloaded archive, which contains the header files to include in your C program and the shared libraries to link against.
On Linux and macOS, you may want to extract to /usr/local/lib:
FILENAME=libtensorflow-cpu-linux-x86_64.tar.gzwget -q --no-check-certificate https://storage.googleapis.com/tensorflow/versions/2.18.1/${FILENAME}sudo tar -C /usr/local -xzf ${FILENAME}
Linker
On Linux/macOS, if you extract the TensorFlow C library to a system directory,
such as /usr/local, configure the linker with ldconfig:
sudo ldconfig /usr/local/lib
If you extract the TensorFlow C library to a non-system directory, such as
~/mydir, then configure the linker environmental variables:
Linux
export LIBRARY_PATH=$LIBRARY_PATH:~/mydir/lib export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/mydir/lib
macOS
export LIBRARY_PATH=$LIBRARY_PATH:~/mydir/lib export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:~/mydir/lib
Build
Example program
With the TensorFlow C library installed, create an example program with the
following source code (hello_tf.c):
%%writefile hello_tf.c
#include <stdio.h>
#include <tensorflow/c/c_api.h>
int main() {
printf("Hello from TensorFlow C library version %s\n", TF_Version());
return 0;
}
Writing hello_tf.c
Compile
Compile the example program to create an executable, then run:
gcc hello_tf.c -ltensorflow -o hello_tf./hello_tf
Hello from TensorFlow C library version 2.18.1
If the program doesn't build, make sure that gcc can access the TensorFlow C
library. If extracted to /usr/local, explicitly pass the library location to
the compiler:
gcc -I/usr/local/include -L/usr/local/lib hello_tf.c -ltensorflow -o hello_tf./hello_tf
Hello from TensorFlow C library version 2.18.1
Build from source
TensorFlow is open source. Read the instructions to build TensorFlow's C library from source code.
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2025-10-13 UTC.