From f83c1370f40a67c229c7129568532d711437565d Mon Sep 17 00:00:00 2001
From: Shannon Appelcline <shannona@skotos.net>
Date: Thu, 15 Jun 2017 12:19:20 -0700
Subject: [PATCH] Create 12_2_Accessing_Bitcoind_with_C.md

---
 12_2_Accessing_Bitcoind_with_C.md | 35 +++++++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)
 create mode 100644 12_2_Accessing_Bitcoind_with_C.md

diff --git a/12_2_Accessing_Bitcoind_with_C.md b/12_2_Accessing_Bitcoind_with_C.md
new file mode 100644
index 0000000..aca8a3f
--- /dev/null
+++ b/12_2_Accessing_Bitcoind_with_C.md
@@ -0,0 +1,35 @@
+# 12.2: Accessing Bitcoind with C
+
+> **NOTE:** This is a draft in progress, so that I can get some feedback from early reviewers. It is not yet ready for learning.
+
+Though command-line `curl` is the easiest way to access the `bitcoind` directly, there are [many other options](https://en.bitcoin.it/wiki/API_reference_(JSON-RPC)) for doing so. The best package for doing so in C is currently [libbitcoinrpc](https://github.com/gitmarek/libbitcoinrpc/blob/master/README.md). It uses a `curl` library for accessing the data and it uses the somewhat clunky `jansson` library for decoding JSON. The advantage of a full programming language over command-line `curl` for writing more complex code should be obvious.
+
+## Set Up libbitcoinrpc
+
+First, you need to install a basic C setup and the dependent packages, `libcurl`, `libjansson`, and `libuuid`. The following will do so on a Ubuntu system:
+```
+$ sudo apt-get install make
+$ sudo apt-get install gcc
+$ sudo apt-get install libcurl4-openssl-dev libjansson-dev uuid-dev
+```
+You can then download [libbitcoinrpc from Github](https://github.com/gitmarek/libbitcoinrpc/blob/master/README.md). Clone it or grab a zip file, as you prefer.
+```
+$ sudo apt-get unzip
+$ unzip libbitcoinrpc-master.zip 
+$ cd libbitcoinrpc-master/
+```
+
+### Compile libbitcoinrpc
+
+You'll probably need to adjust your `$PATH`, so that you can access `/sbin/ldconfig`:
+```
+$ PATH="/sbin:$PATH"
+```
+Then you can compile:
+```
+$ make
+```
+If that works, you can install the package:
+```
+$ sudo make install
+```