「テスト駆動開発による組み込みプログラミングの集い」用サンプルを Debian Sid で make する

「テスト駆動開発による組み込みプログラミングの集い」に参加することになったのですが、サンプルを Debin GNU/Linux Sid (amd64) 上の gcc4.8.1 で make できなかったので対処方法をメモしておきます。

「テスト駆動開発による組み込みプログラミングの集い」用サンプルの動作確認方法 に従い、CppUTest を make すると、Debian BTS #713636と同じエラーでこけます。

ちなみに最新の CppUTest では -Werror オプションをメンテナモード以外 (デフォルト) で使わないことでこの問題に対処してるようです。

stable (gcc 4.7) で試してみたところ、make できるようなのでちょっとごにょごにょして gcc4.7 を使うようにしてみました。

update-alternatives では gcc のバージョンきりかえができないようなので、(不可能なわけではない kinneko@4月失職は回避されたけど相変わらず転職先募集中の日記) シンボリックリンクを手動で張り替えてやります。

#ls -l /usr/bin/gcc*
lrwxrwxrwx 1 root root     16  7月 15 23:29 /usr/bin/gcc -> /usr/bin/gcc-4.8
-rwxr-xr-x 1 root root 353656  6月 21 02:44 /usr/bin/gcc-4.6
-rwxr-xr-x 1 root root 575160  6月 14 21:35 /usr/bin/gcc-4.7
-rwxr-xr-x 1 root root 772208  7月 10 01:50 /usr/bin/gcc-4.8
-rwxr-xr-x 1 root root  23360  6月 14 21:35 /usr/bin/gcc-ar-4.7
-rwxr-xr-x 1 root root  24736  7月 10 01:50 /usr/bin/gcc-ar-4.8
-rwxr-xr-x 1 root root  23360  6月 14 21:35 /usr/bin/gcc-nm-4.7
-rwxr-xr-x 1 root root  24704  7月 10 01:50 /usr/bin/gcc-nm-4.8
-rwxr-xr-x 1 root root  23360  6月 14 21:35 /usr/bin/gcc-ranlib-4.7
-rwxr-xr-x 1 root root  24704  7月 10 01:50 /usr/bin/gcc-ranlib-4.8

#ln -snf /usr/bin/gcc-4.7 /usr/bin/gcc

#ls -l /usr/bin/gcc*
lrwxrwxrwx 1 root root     16  7月 15 23:29 /usr/bin/gcc -> /usr/bin/gcc-4.7
-rwxr-xr-x 1 root root 353656  6月 21 02:44 /usr/bin/gcc-4.6
-rwxr-xr-x 1 root root 575160  6月 14 21:35 /usr/bin/gcc-4.7
-rwxr-xr-x 1 root root 772208  7月 10 01:50 /usr/bin/gcc-4.8
-rwxr-xr-x 1 root root  23360  6月 14 21:35 /usr/bin/gcc-ar-4.7
-rwxr-xr-x 1 root root  24736  7月 10 01:50 /usr/bin/gcc-ar-4.8
-rwxr-xr-x 1 root root  23360  6月 14 21:35 /usr/bin/gcc-nm-4.7
-rwxr-xr-x 1 root root  24704  7月 10 01:50 /usr/bin/gcc-nm-4.8
-rwxr-xr-x 1 root root  23360  6月 14 21:35 /usr/bin/gcc-ranlib-4.7
-rwxr-xr-x 1 root root  24704  7月 10 01:50 /usr/bin/gcc-ranlib-4.8

こんな感じで、gcov と g++ も 4.7 に張り替える。
#ln -snf /usr/bin/g++-4.7 /usr/bin/g++
#ln -snf /usr/bin/gcov-4.7 /usr/bin/gov

で、make したら今度は ld が stdc++ を見つけてこれないと言ってこけました。
とりあえずこんな風にして回避しておこう。。。

ln -s /usr/lib/gcc/x86_64-linux-gnu/4.7/libstdc++.so /usr/lib/libstdc++.so

#make
Linking CppUTest_tests
cc -g   -o CppUTest_tests objs/tests/AllTests.o objs/tests/AllocLetTestFreeTest.o objs/tests/AllocationInCppFile.o objs/tests/CheatSheetTest.o objs/tests/CommandLineArgumentsTest.o objs/tests/CommandLineTestRunnerTest.o objs/tests/JUnitOutputTest.o objs/tests/MemoryLeakDetectorTest.o objs/tests/MemoryLeakOperatorOverloadsTest.o objs/tests/MemoryLeakWarningTest.o objs/tests/NullTestTest.o objs/tests/PluginTest.o objs/tests/PreprocessorTest.o objs/tests/SetPluginTest.o objs/tests/SimpleStringTest.o objs/tests/TestFailureTest.o objs/tests/TestFilterTest.o objs/tests/TestHarness_cTest.o objs/tests/TestInstallerTest.o objs/tests/TestMemoryAllocatorTest.o objs/tests/TestOutputTest.o objs/tests/TestRegistryTest.o objs/tests/TestResultTest.o objs/tests/UtestTest.o objs/tests/AllocLetTestFree.o objs/tests/AllocationInCFile.o objs/tests/TestHarness_cTestCFile.o lib/libCppUTest.a -lstdc++
Running CppUTest_tests
.........!!.......................................
..................................................
..................................................
.....................................!............
..................................................
..........................!.......................
..
OK (302 tests, 298 ran, 801 checks, 4 ignored, 0 filtered out, 29 ms)

できた…!
(この方法がベストかどうかはわからない)

スポンサーリンク

フォローする

スポンサーリンク