LoginSignup
9
8

More than 5 years have passed since last update.

AutotoolsによるC/C++クロスビルド覚書き

Last updated at Posted at 2017-04-12

Autotoolsでのクロスコンパイルで悪戦苦闘したためメモ

例としてyoctoのi.MX6(imx6dlsabresd)ビルド環境を用いてAutotoolsを使ってクロスビルドする。
yoctoで作成したツールチェインをインストールしてビルドするのが正規の手順だが今回は理由あって環境変数等を設定して無理やりビルドを実行する。

環境変数の設定

SDKTARGETSYSROOT

必要ではないがsysrootのパスは繰り返し使用するため環境変数に設定しておく

$ export SDKTARGETSYSROOT=<yoctoパス>/build/tmp/sysroots/imx6sdsabresd

PATH

gcc等のツールチェインがある場所を追記する。

$ export PATH=<yoctoパス>/build/tmp/sysroots/x86_64-linux/usr/bin/arm-poky-linux-gnueabi:$PATH

ターゲットマシンではなくビルドするPC上で動作するコマンドであるため、SDKTARGETSYSROOTに似ているが異なるので注意

pkg-config関係

$ export PKG_CONFIG_SYSROOT_DIR=$SDKTARGETSYSROOT
$ export PKG_CONFIG_PATH=$SDKTARGETSYSROOT/usr/lib/pkgconfig

PKG_CONFIG_SYSROOT_DIRを設定するとpkg-configの結果にそのパスが付加されてくるので場合によっては不要かも

ツールチェイン関係

$ export CC="arm-poky-linux-gnueabi-gcc  -march=armv7-a -mthumb-interwork -mfloat-abi=hard -mfpu=neon -mtune=cortex-a9 --sysroot=$SDKTARGETSYSROOT"
$ export CXX="arm-poky-linux-gnueabi-g++  -march=armv7-a -mthumb-interwork -mfloat-abi=hard -mfpu=neon -mtune=cortex-a9 --sysroot=$SDKTARGETSYSROOT"
$ export CPP="arm-poky-linux-gnueabi-gcc -E  -march=armv7-a -mthumb-interwork -mfloat-abi=hard -mfpu=neon -mtune=cortex-a9 --sysroot=$SDKTARGETSYSROOT"
$ export AS="arm-poky-linux-gnueabi-as "
$ export LD="arm-poky-linux-gnueabi-ld  --sysroot=$SDKTARGETSYSROOT"
$ export GDB=arm-poky-linux-gnueabi-gdb
$ export STRIP=arm-poky-linux-gnueabi-strip
$ export RANLIB=arm-poky-linux-gnueabi-ranlib
$ export OBJCOPY=arm-poky-linux-gnueabi-objcopy
$ export OBJDUMP=arm-poky-linux-gnueabi-objdump
$ export AR=arm-poky-linux-gnueabi-ar
$ export NM=arm-poky-linux-gnueabi-nm
$ export M4=m4
$ export CROSS_COMPILE=arm-poky-linux-gnueabi-

ターゲットとなるマシンによってオプションは異なるが--sysroot=は共通で必要になるはずである。

ビルド

$ ./configure --host=arm-poky-linux-gnueabi --build=x86_64-linux --with-libtool-sysroot=$SDKTARGETSYSROOT --prefix=$SDKTARGETSYSROOT/usr
$ make

--with-libtool-sysrootのかわりに--with-sysrootのこともあるので./configure --helpを要確認。

9
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
8