FAQ

c++のコンパイル時にwchar.hでエラーになる

iostremをincludeしているファイルで、コンパイル時に以下の様にエラーがレポートされる場合、uClibc ライブラリにて WCHARがサポートしていないのが原因です。

 arm-elf-g++  -O1 -g  -msoft-float -Dlinux -D__linux__ -Dunix -D__uClinux__ 
 -DEMBED -I/home/fumito/uClinux-dist/lib/uClibc/include 
 -I/home/fumito/uClinux-dist/lib/libm    
 -I/home/fumito/uClinux-dist/lib/libcrypt_old 
 -I/home/fumito/uClinux-dist -fno-builtin -nostartfiles -D__PIC__ -fpic 
 -msingle-pic-base -I/home/fumito/uClinux-dist//include    -c -o prog.o prog.cpp
 In file included from /usr/local/arm-elf/stlport/cwchar:49,
                 from /usr/local/arm-elf/stlport/stl/char_traits.h:31,
                 from /usr/local/arm-elf/stlport/stl/_iosfwd.h:22,
                 from /usr/local/arm-elf/stlport/iostream:29,
                 from prog.cpp:1:
 /home/fumito/uClinux-dist/lib/uClibc/include/../include/wchar.h:32: #error 
 Attempted to include wchar.h when uClibc built without wide char support.
 make: ***[ prog.o ] エラー 1

 

正常にコンパイルするためには、まずuClinux-dist/uClibc ディレクトリに移動してuClibcのコンフィグを行います。

 [PC uClibc]$ <span class="input">make menuconfig</span>

 

表示された画面で、WCHARの設定を有効にします。

String and Stdio Support --->
  [*] Wide Character Support

 

uClinux-dist ディレクトリに移動して、コンパイルを行います。

 [PC uClinux-dist]$ <span class="input">make clean</span>
 [PC uClinux-dist]$ <span class="input">make</span>

 

コンパイル終了後、目的のソースコードを再度コンパイルして下さい。