日誌


2018/06/07

Ubuntu 16.04 での pybombsによる GNU Radioのビルドエラーを回避(対症療法)

Tweet ThisSend to Facebook | by 山田洋
2018年6月11日追記:その後、GNU Radioのマスターブランチが修正されて、CMAKE_CXX_STANDARDを修正する必要はなくなったそうです。以下は、現在では意味のない情報です。

GitHubのIssuesで5月31日ごろGNU Radioのビルドエラーが報告されていた。
※報告者は、Ettus Researchの創業者のMatt Ettusさんのようですね。一部のソースコードの書き方のスタイルを変えたので、C++コンパイラを -std=c++11 オプションありの設定に変更することが求められているようです。

[ 13%] Building CXX object gr-blocks/lib/CMakeFiles/gnuradio-blocks.dir/float_array_to_int.cc.o
In file included from /usr/include/c++/5/cstdint:35:0,
                 from /home/2017/imamura/prefix/default/src/gnuradio/gr-blocks/lib/float_array_to_int.cc:30:
/usr/include/c++/5/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support must be enabled with the -std=c++11 or -std=gnu++11 compiler options.

ちょっと荒業だが、CMakeLists.txt の内容を2文字だけ書き換えたところ、ビルドすることができた。GNU RadioのGitHubでもいずれ対応すると思われるので、対応を待ったほうがよいが、待てないので、下記の手順を実行した。

$ rm -rf .pybombs  (以前のインストール情報を全部消して、一からやり直す)
$ rm -rf ~/prefix

$ pybombs recipes add gr-recipes git+https://github.com/gnuradio/gr-recipes.git
PyBOMBS - INFO - PyBOMBS Version 2.3.2
PyBOMBS.Packager.apt - INFO - Install python-apt to speed up apt processing.
Cloning:     (100%) [==================================================================================================]

$ pybombs recipes add gr-etcetera git+https://github.com/gnuradio/gr-etcetera.git
PyBOMBS - INFO - PyBOMBS Version 2.3.2
PyBOMBS.Packager.apt - INFO - Install python-apt to speed up apt processing.
Cloning:     (100%) [==================================================================================================]

$ mkdir prefix
$ pybombs prefix init ~/prefix/default/

$ pybombs fetch gnuradio
PyBOMBS - INFO - PyBOMBS Version 2.3.2
PyBOMBS.fetch - INFO - Downloading source for package gnuradio
PyBOMBS.Packager.apt - INFO - Install python-apt to speed up apt processing.
Cloning:     (100%) [==================================================================================================]

コンパイル時の設定を変更するため、
/home/UserName/prefix/default/src/gnuradio/CMakeLists.txt の内容を変更する。

# Configure C++ standard if not externally specified (will actually be              
# set after CppUnit check below). Use the variable CMAKE_CXX_STANDARD 
# since it will actually be used for this purposes starting in CMake 3.1.    
IF(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
    SET(CMAKE_CXX_STANDARD 11)      98だったのを 11 に変更。とりあえずgccのみの対応
ELSEIF(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
    SET(CMAKE_CXX_STANDARD 98)
ELSEIF(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
    SET(CMAKE_CXX_STANDARD 98)
ELSE()
    message(warning "C++ standard could not be set because compiler is not GNU, Clang or MSVC.")
ENDIF()

$ pybombs install gnuradio
PyBOMBS - INFO - PyBOMBS Version 2.3.2
PyBOMBS.Packager.apt - INFO - Install python-apt to speed up apt processing.
PyBOMBS.install_manager - INFO - Phase 1: Creating install tree and installing binary packages:
Install tree:
|
\- gnuradio
   |
   +- uhd
   |
   \- apache-thrift
PyBOMBS.install_manager - INFO - Phase 2: Recursively installing source packages to prefix:
PyBOMBS.install_manager - INFO - Installing package: apache-thrift
PyBOMBS.Packager.apt - INFO - Install python-apt to speed up apt processing.
Building:    (100%) [==================================================================================================]
Installing:  (100%) [==================================================================================================]
PyBOMBS.install_manager - INFO - Installation successful.
PyBOMBS.install_manager - INFO - Installing package: uhd
PyBOMBS.Packager.apt - INFO - Install python-apt to speed up apt processing.
Cloning:     (100%) [==================================================================================================]
Configuring: (100%) [==================================================================================================]
Building:    (100%) [==================================================================================================]
Installing:  (100%) [==================================================================================================]
PyBOMBS.install_manager - INFO - Installation successful.
PyBOMBS.install_manager - INFO - Installing package: gnuradio
Configuring: (100%) [==================================================================================================]
Building:    (100%) [==================================================================================================]
Installing:  (100%) [==================================================================================================]
PyBOMBS.install_manager - INFO - Installation successful.

gnuradio-companionは、起動して動作はするようだ(詳しいテストはしていない)。テストもなしで、こんないい加減な方法でよいかは、少し心配。

20:32 | 投票する | 投票数(0) | コメント(0)