Intel Edison 用に Boost C++ をビルドする

Posted Sun Mar 20 2016

b2 のビルド

b2 は通常の Linux 用の gcc でビルドします.

$ cd boost_1_60_0
$ ./bootstrap.sh

boost のビルド

boost のビルドは Edison 用のクロスコンパイラで行います.クロスコンパイラは ~/intel-edison/bin/poky-edison/1.7.2 下にインストールしているものとします.ビルド前に project-config.jam を下記のように修正します.

--- project-config_default.jam	2016-02-17 23:49:21.835309000 +0900
+++ project-config.jam	2016-02-18 00:13:20.635252000 +0900
@@ -9,7 +9,10 @@ import feature ;
 # file.
 if ! gcc in [ feature.values <toolset> ]
 {
-    using gcc ; 
+    using gcc : i586
+              : i586-poky-linux-g++
+              : <compileflags>--sysroot=/home/daisuke/intel-edison/bin/poky-edison/1.7.2/sysroots/core2-32-poky-linux
+              ;
 }
 
 project : default-build <toolset>gcc ;
@@ -18,7 +21,10 @@ project : default-build <toolset>gcc ;
 import python ;
 if ! [ python.configured ]
 {
-    using python : 2.7 : /usr ;
+    using python : 2.7
+                 : /home/daisuke/intel-edison/bin/poky-edison/1.7.2/sysroots/x86_64-pokysdk-linux/usr
+                 : /home/daisuke/intel-edison/bin/poky-edison/1.7.2/sysroots/core2-32-poky-linux/usr/include/python2.7
+                 ;
 }

b2 実行前に Edison 用のクロスコンパイラの環境変数を有効にしビルドします.

$ (source ~/intel-edison/bin/poky-edison/1.7.2/environment-setup-core2-32-poky-linux && ./b2 install -j2 --prefix=./stage)
$ objdump -f ./stage/lib/libboost_atomic.a
書庫 ./stage/lib/libboost_atomic.a 内:

lockpool.o:     ファイル形式 elf32-i386
アーキテクチャ: i386, フラグ 0x00000011:
HAS_RELOC, HAS_SYMS
開始アドレス 0x00000000