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

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

新規登録して質問してみよう
ただいま回答率
85.48%
GCC

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

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

解決済

1回答

872閲覧

raspberrypiで、AMD64/i386用実行ファイルへのクロスコンパイル環境の作り方で困っています

night

総合スコア7

GCC

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

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

1グッド

1クリップ

投稿2018/01/16 23:29

よくメインパソコンでRaspberryPi用バイナリの作り方の解説サイトは見つかるのですが、
その逆に、RaspberryPiでメインパソコン用バイナリを作りたく環境作りをしているのですがうまくいきません。

クロスコンパイル用に、gccをソースからコンパイルしインストールすればいいのかと挑戦するのですが、
gccのコンパイルも途中で失敗してしまいます・・・

RaspberryPiで使用しているOSは、Raspbian32bit
Ubuntu 64bit/32bit へのクロスコンパイル環境

gccのコンパイルで行った手順は・・・

  1. コンパイルに必要なソフトのインストール

 $ sudo apt-get install build-essential libgmp-dev libmpfr-dev libmpc-dev bc git-core

  1. gccのソースをダウンロード

 http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/
メジャーバージョン違いの最新すべてを試しました。

  1. gcc付属のライブラリダウンロードソフトの実行

 # ./contrib/download_prerequisites

  1. gcc の configure に付けたオプション

 ../configure --enable-languages=c,c++ --prefix=/usr/local --disable-bootstrap --target=x86_64-linux-gnu --host=arm-linux-gnueabihf

以上の内容で、RaspberryPi上でコンパイルを行った所、途中でエラーが出て進まなくなりました。
どうすればよいかわからず、アドバイスをいただきたいです。
よろしくお願いします。

can110👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

https://raspberrypi.stackexchange.com/questions/34996/cross-compile-x86-64-code-on-raspberry-pi-2

に、ビルドの方法がかかれてます。

Answerしてくれた方がビルドしたバイナリのLinkをはってます。(GoogleDriveにあるようなので、ブラウザからダウンロードが必要?)

簡単に↓のように試しました。StretchなRaspbianでも動作するようです。

pi@rpi-mt08:~ $ ### x86_64/x86_64-unknown-linux-gnu.tar.gzを.home/piにダウンロードしておく pi@rpi-mt08:~ $ cd ~ pi@rpi-mt08:~ $ uname -a Linux rpi-mt08 4.9.59-v7+ #1047 SMP Sun Oct 29 12:19:23 GMT 2017 armv7l GNU/Linux pi@rpi-mt08:~ $ cat /etc/debian_version 9.3 pi@rpi-mt08:~ $ mv x86_64/x86_64-unknown-linux-gnu.tar.gz . pi@rpi-mt08:~ $ tar xf ./x86_64-unknown-linux-gnu.tar.gz pi@rpi-mt08:~ $ rmdir x86_64/ pi@rpi-mt08:~ $ tar xf ./x86_64-unknown-linux-gnu.tar.gz pi@rpi-mt08:~ $ sudo chown pi.pi -R ./x86_64-unknown-linux-gnu pi@rpi-mt08:~ $ export PATH=/home/pi/x86_64-unknown-linux-gnu/bin:$PATH pi@rpi-mt08:~ $ cat > hello_world.c #include <stdio.h> int main(int ac, char *av[]) { printf("Hello world\n"); return 0; } ^D pi@rpi-mt08:~ $ x86_64-unknown-linux-gnu-gcc hello_world.c -o hello_world-x86_64 pi@rpi-mt08:~ $ file hello_world-x86_64 hello_world-x86_64: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, not stripped pi@rpi-mt08:~ $ pi@rpi-mt08:~ $ # x86_64 linux機にコピー. pi@rpi-mt08:~ $ scp ./hello_world-x86_64 mt08@linux64:/home/mt08 mt08@linux64's password: hello_world-x86_64 100% 6896 946.5KB/s 00:00 pi@rpi-mt08:~ $ pi@rpi-mt08:~ $ # x86_64 linuxにて実行. pi@rpi-mt08:~ $ ssh mt08@linux64 mt08@linux64's password: Welcome to Ubuntu 16.04.3 LTS (GNU/Linux 4.4.0-104-generic x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage Last login: Wed Jan 17 12:34:56 2018 from 10.10.10.10 mt08@linux64:~$ ./hello_world-x86_64 Hello world mt08@linux64:~$

投稿2018/01/17 18:31

mt08

総合スコア1825

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

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

night

2018/01/18 11:27

お答えありがとうございます! 本当に助かりました、教えてもらったページを参考にしながら、 最新のgccのコンパイルにも挑戦してみます!
night

2018/01/20 11:19 編集

【後日報告】 教えてもらったページを参考にしながら、自分でgccのコンパイルを行い無事にバイナリが作れました! 64bitと32bitの2つを作りましたが、それぞれコンパイルに12時間以上かかりました・・・ もしも同じようにRaspberryPi3上で、i386/amd64へのクロスコンパイル用gccが必要な人のために、 作ったバイナリをアップロードしておきますね。 https://www.dropbox.com/s/0ff8n2o51s2edv6/i686-ubuntu16.04-linux-gnu.tar.gz?dl=0 https://www.dropbox.com/s/ltzgd2h2dhbroby/x86_64-unknown-linux-gnu.tar.gz?dl=0 Raspbian Stretch でコンパイルしています。 gccのバージョンは両方6.3です。 32bit版のファイル名に「ubuntu16.04」と入っていますが、 古いubuntuでも動作しましたしcentosでも動きそうです。 上記のバイナリで、自分が期待していた用途は十分達成できましたが、 正しく動かなかったり十分でなかったりリンクが切れてたりした場合は自力でコンパイルを行ってください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問