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

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

ただいまの
回答率

91.02%

  • Linux

    3191questions

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

  • GCC

    124questions

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

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

解決済

回答 1

投稿

  • 評価
  • クリップ 1
  • VIEW 228

night

score 1

よくメインパソコンで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

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

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

 ./contrib/download_prerequisites

4) gcc の configure に付けたオプション
../configure --enable-languages=c,c++ --prefix=/usr/local --disable-bootstrap --target=x86_64-linux-gnu --host=arm-linux-gnueabihf

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+2

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/18 20:27

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

    キャンセル

  • 2018/01/20 20: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でも動きそうです。

    上記のバイナリで、自分が期待していた用途は十分達成できましたが、
    正しく動かなかったり十分でなかったりリンクが切れてたりした場合は自力でコンパイルを行ってください。

    キャンセル

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

  • ただいまの回答率 91.02%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    yum install ? make ?

    お世話になっております。 Linux初心者のEzです。 yum install と make の違いをご教授頂きたく質問させて頂きます。 何かソフトをインストールするときは $

  • 解決済

    puppy linux で geany を使いたい!

    プログラミング初心者です。 puppy linux の geany を使いたいのですが、 作ったプログラムがコンパイルされません・・・ パス設定の方法、必要なコマンドなどを教えてく

  • 受付中

    ソースからインストールしたPHPをアンインストールする方法

    AWSのEC2を使い、LAMPの構築を行っていたのですがPHPをインストールする際、yumではなくソースからコンパイルしてインストールしました。(参考サイト:http://d.ha

  • 解決済

    Red Hat Linxで有線LANをつなぎたい

    Red Hat Linx7Jで有線LANをつなぎたいです。 GUI有りでの説明をお願いします。 ipconfigで調べても何も出てこないのでドライバがないんだと思います。 あ

  • 受付中

    複数人で共有しているLinux開発サーバーへのVimの個別ビルド

    利用したいVimプラグインが特定のバージョン以上でしか対応しておらず、 会社のLinux(CentOS)開発環境サーバーで最新バージョンのVimを利用したいと思っています。 し

  • 受付中

    tensor flowのインストール

    tensor flowをインストールしようと思っております 以下のページを参考にしているのですが http://dev.classmethod.jp/machine-learnin

  • 解決済

    centos6におけるgccのインストール方法。

    centos6でbind9をソースからインストールしたら、 checking for gcc… no checking for cc… no checking for cl.

  • 解決済

    Ubuntuのlibusb-1.0.21のInstallに関する質問

    libusb-1.0.21が展開されたdirに移動して、./configure を 実行しました所、下記のconfigure: errorが表示されました。 当然その後のコマン

同じタグがついた質問を見る

  • Linux

    3191questions

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

  • GCC

    124questions

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