2017/06/18

Fedora26でfaust2jaqt

Faust Quick ReferenceのChapter 6でfaust2jaqtが出てきますが、以下のようなエラーが出てうまく動きません。

$ cat noise.dsp
process = library("music.lib").noise * hslider("level", 0, 0, 1, 0.01);

$ faust2jaqt noise.dsp
In file included from /usr/include/c++/7/ext/string_conversions.h:41:0,
                 from /usr/include/c++/7/bits/basic_string.h:6159,
                 from /usr/include/c++/7/string:52,
                 from /usr/include/c++/7/bits/locale_classes.h:40,
                 from /usr/include/c++/7/bits/ios_base.h:41,
                 from /usr/include/c++/7/ios:42,
                 from /usr/include/c++/7/ostream:38,
                 from /usr/include/c++/7/iostream:39,
                 from noise.cpp:46:
/usr/include/c++/7/cstdlib:75:15: fatal error: stdlib.h: No such file or directory
 #include_next <stdlib.h>
               ^~~~~~~~~~
compilation terminated.
make: *** [Makefile:656: noise.o] Error 1

これはQt5.7.1のqmakeがgccのオプションに-isystem /usr/includeを付け加えるのが原因のようです。調べたところvoidlinuxのissue#5254に暫定的な解決策がありました。

Qt5のgcc-base.confを開きます。

sudo nano /usr/lib64/qt5/mkspecs/common/gcc-base.conf

QMAKE_CFLAGS_ISYSTEMの値を-Iに変更します。

#QMAKE_CFLAGS_ISYSTEM        = -isystem
QMAKE_CFLAGS_ISYSTEM        = -I

これでfaust2jaqtが通るようになりました。

faust2jaqt noise.dsp
./noise