質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
g++

g++はGNUコンパイラコレクション(gcc)のC++コンパイラーです。

GCC

GCCはGNU Compiler Collectionの略です。LinuxのC言語コンパイラのデファクトスタンダードであり、数多くの他言語やプラットフォームサポートもします。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Q&A

解決済

2回答

1791閲覧

Raspberry Pi 3で動く実行ファイルをUbuntuでつくりたい

torimingo

総合スコア122

g++

g++はGNUコンパイラコレクション(gcc)のC++コンパイラーです。

GCC

GCCはGNU Compiler Collectionの略です。LinuxのC言語コンパイラのデファクトスタンダードであり、数多くの他言語やプラットフォームサポートもします。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

0グッド

0クリップ

投稿2019/03/08 23:13

Raspberry Pi 3で動く実行ファイルをUbuntu(18.04.2 LTS 64bit)上でつくりたいです。

ubuntu上でクロスコンパイルをすればよさそうだということがわかったので、実施してみたら、エラーが出力され、先に進めない状態です。
以下のツールチェーンを使いました。
https://github.com/raspberrypi/tools

以下のコマンドで、画面にhelloと表示するだけの簡単なコードをクロスコンパイルしようとしました。

$ ~/raspberrypi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-g++ hello.cpp

すると、以下のエラーが出力されました。
たぶん「機種依存のライブラリがあるから、どうにかして下さい」といってるような気がするんですが、解消方法がわかりません。

In file included from /usr/include/wchar.h:30:0, from /home/aiueo/raspberrypi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/arm-linux-gnueabihf/include/c++/4.8.3/cwchar:44, from /home/aiueo/raspberrypi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/arm-linux-gnueabihf/include/c++/4.8.3/bits/postypes.h:40, from /home/aiueo/raspberrypi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/arm-linux-gnueabihf/include/c++/4.8.3/iosfwd:40, from /home/aiueo/raspberrypi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/arm-linux-gnueabihf/include/c++/4.8.3/ios:38, from /home/aiueo/raspberrypi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/arm-linux-gnueabihf/include/c++/4.8.3/ostream:38, from /home/aiueo/raspberrypi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/arm-linux-gnueabihf/include/c++/4.8.3/iostream:39, from hello.cpp:1: /usr/include/bits/floatn.h:75:70: エラー: 不明なマシンモード ‘__TC__’ です typedef _Complex float __cfloat128 __attribute__ ((__mode__ (__TC__))); ^ /usr/include/bits/floatn.h:87:9: エラー: ‘__float128’ does not name a type typedef __float128 _Float128; ^ In file included from /home/aiueo/raspberrypi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/arm-linux-gnueabihf/include/c++/4.8.3/cwchar:44:0, from /home/aiueo/raspberrypi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/arm-linux-gnueabihf/include/c++/4.8.3/bits/postypes.h:40, from /home/aiueo/raspberrypi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/arm-linux-gnueabihf/include/c++/4.8.3/iosfwd:40, from /home/aiueo/raspberrypi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/arm-linux-gnueabihf/include/c++/4.8.3/ios:38, from /home/aiueo/raspberrypi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/arm-linux-gnueabihf/include/c++/4.8.3/ostream:38, from /home/aiueo/raspberrypi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/arm-linux-gnueabihf/include/c++/4.8.3/iostream:39, from hello.cpp:1: /usr/include/wchar.h:406:8: エラー: ‘_Float128’ does not name a type extern _Float128 wcstof128 (const wchar_t *__restrict __nptr, ^ /usr/include/wchar.h:523:8: エラー: ‘_Float128’ does not name a type extern _Float128 wcstof128_l (const wchar_t *__restrict __nptr, ^

自分で調べてみたところ、以下のサイトにあるツールチェーン(?)を使うと、もしかしたら解消されるかもしれない、ということがわかったのですが、難易度が高そうなので、試して見る前にまずはteratailで伺った次第です。
https://aur.archlinux.org/packages/?O=0&SeB=nd&K=distccd-alarm

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

torimingo

2019/03/09 00:30

Thank you for your replying. It is hard level to me the contents in its URL... I am sorry very cheap English...
Stan_Dma

2019/03/09 00:32

So am I. Good luck!
guest

回答2

0

自己解決

自己解決しました。
githubではなく、aptで落としてきたツールチェーンを使ったら、エラーが出ませんでした。
Rapsberry pi 3上での動作を確認しました。
以下に手順を示します。

sudo apt install g++-arm-linux-gnueabihf arm-linux-gnueabihf-g++ -o hello_arm hello.cpp

-staticオプションを付けず、ダイナミックリンクでコンパイルしましたが、Raspberry Pi上で動作しました。なぜかはわかりません。
ちなみに、スタティックリンクでコンパイルしたものも、Raspberry Pi上で動作しました。

参考
https://qiita.com/tetsu_koba/items/9bdcb59f912efbff3128

投稿2019/03/09 01:14

torimingo

総合スコア122

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ラズパイ側のOSはなんでしょう。
クロスコンパイルする場合には、対象のCPUのOSに対応したライブラリなんかを用意する必要があります。

ベアメタルで実行させるならその必要はないですが、そういうはなしなのかな?

投稿2019/03/08 23:41

y_waiwai

総合スコア87747

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

torimingo

2019/03/08 23:58

lsb_releaseというコマンドで調べてみたところ、ラズパイ側のOSは「Raspbian GNU/Linux 9.4(stretch)」というもののようです。 ベアメタル(OSの入っていないハードのことでしょうか)ではないと思われます。 Raspbian用のライブラリをUbuntu上に持ってくる必要があるということですね。 なかなか先が長そうですが、頑張ります(汗)
y_waiwai

2019/03/09 00:14

そんなことしなくても、ラズパイ上のGCCでコンパイルすればラズパイ上で動かせますが、それではダメなんでしょうか
torimingo

2019/03/09 00:24

だいぶ前に仕事で、windowsでクロスコンパイルしてVxWorksで動かすというのがあったのですが、全然わからなかったので、OSは違いますが、クロスコンパイルの勉強をしようと思いまして・・・m(_ _)m
Stan_Dma

2019/03/09 00:40

Cross-compile itself is very valuable to build any executables between the different architectures, therefore there exist the toolchains, like binutils, gcc, glibc to cross-compile smoothly.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問