お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2011-03-09 00:47:34

T.O
メンバ
登録日: 2008-06-09

h8300-elf-gccインストール

こんばんわ
懲りずにまた質問させて頂きたいと思います。

H8クロスコンパイラで、elf形式のgccを構築しようと
下記の組み合わせ(複数のサイトなどでおすすめとあったため:深い意味はないです)で
gccのコンパイルまではうまくいきました。

・binutils-2.19.1
・gcc-3.4.6
・newlib-1.18.0

ところが、sudo make installを実行すると

h8300-elf-ranlib:コマンドが見つかりません

とエラーを吐き出し止まってしまいます。

以下該当行と、その直前の行です。

コード:

/usr/bin/install -c -m 644 ./libgcc.a /usr/local/h8300-elf/lib/gcc/h8300-elf/3.4.6/
h8300-elf-ranlib /usr/local/h8300-elf/lib/gcc/h8300-elf/3.4.6/libgcc.a

因みに、configureとmakeのオプションは以下の通りです:

コード:

../configure --prefix=/usr/local/h8300-elf --target=h8300-elf --enable-languages=c --with-newlib --with-headers=/home/(user)/newlib-1.18.0/newlib/libc/include --disable-nls

make CFLAGS="-O -fomit-frame-pointer" all

もちろん(今は一時的ですが)exportでPATHは通してます。
(h8300-elf-ranlib --versionでバージョン確認が出来ます)

これといった検索もかからず、また質問させて頂きます。
よろしくお願い致します。

オフライン

 

#2 2011-03-09 09:46:04

hmatsue
アドバイザ
登録日: 2009-03-10

Re: h8300-elf-gccインストール

クロスコンパイリング環境については分かりませんが、
sudo makeでプログラムが見つからないのは、
userで$PATHを変更していても、sudo実行時には反映されないことが原因ではないでしょうか。

userの$PATHを引き継ぎたい場合は、
sudo env PATH=$PATH make install
などとすれば良いかと思います。

# 実際に使用とされていることがシステムに悪影響を与えないかは分かりませんので、別途確認願います。
# local以下なら大丈夫のような気はしますが、為念。

オフライン

 

#3 2011-03-09 10:20:14

einundzwanzighundertsechs
メンバ
登録日: 2008-12-28

Re: h8300-elf-gccインストール

一般ユーザの不用意な環境設定をスーパーユーザが引き継がないようにしておくのはセキュリティの基本です.

hmatsue さん による投稿:

sudo env PATH=$PATH make install

sudo には同様の機能があるので,2つめの env は不必要です.
もちろん有って悪いというわけではないのですが…

sudo [-AbEHnPS] [-C fd] [-g groupname|#gid] [-p prompt]
       [-u username|#uid] [VAR=value] [-i | -s] [command]

Environment variables to be set for the command may also be passed on
       the command line in the form of VAR=value, e.g.
       LD_LIBRARY_PATH=/usr/local/pkg/lib.

オフライン

 

#4 2011-03-09 14:36:46

einundzwanzighundertsechs
メンバ
登録日: 2008-12-28

Re: h8300-elf-gccインストール

;; どうも最近言葉足らずの傾向が…

einundzwanzighundertsechs  による投稿:

一般ユーザの不用意な環境設定をスーパーユーザが引き継がないようにしておくのはセキュリティの基本

だから sudo が一般ユーザの PATH 環境変数を無視しても不思議ではない.
しかし,環境変数を全く設定できないのも不便だから何か方法があるはずだ.
じゃあ,sudo のマニュアルから調べてみよう.

と,いう様に考えて欲しいですね.

オフライン

 

#5 2011-03-09 20:19:24

T.O
メンバ
登録日: 2008-06-09

Re: h8300-elf-gccインストール

こんばんわ
いつもお世話になっております。

hmatsueさん による投稿:

sudo makeでプログラムが見つからないのは、
userで$PATHを変更していても、sudo実行時には反映されないことが原因ではないでしょうか。

userの$PATHを引き継ぎたい場合は、
sudo env PATH=$PATH make install
などとすれば良いかと思います。

ご指摘の通りで無事インストール出来ました。
どうもありがとうございます。

einundzwanzighundertsechsさん による投稿:

...セキュリティの基本です.

毎度ご回答ありがとうございます。
折角なので前回共々そのセキュリティについて
もう少しご解説と言いますか
ご教授頂けたらと思います。
(実は私がよくわかってないかもしれない(と言うかそう)ので)

いつもありがとうございます。

オフライン

 

#6 2011-03-09 21:59:40

einundzwanzighundertsechs
メンバ
登録日: 2008-12-28

Re: h8300-elf-gccインストール

専門家では無いので,技術的なことは詳しく論じられませんが,
セキュリティに対する姿勢については少し語れます.

まずは意識しながらドキュメントを読む様にしましょう.

sudo コマンドのマニュアルを開いたことは有りますか?
sudo は,権限を強化して一般ユーザでは出来ない作業をする場合に使うわけですから,セキュリティへの配慮が必要です.
それを念頭に sudo のマニュアルを流し読みすれば SECURITY NOTES の項目が目に止まるでしょう.
そこには sudo が環境変数をどう扱うかが説明されています.
全てを一度には理解できなかったとしても,「sudo は環境変数にセキュリティ上の注意を払っている」ことは読み取れるでしょう.
その知識は,-- #4 に書いたように-- 問題を解決する糸口にもなり得ます.

オフライン

 

#7 2011-04-17 06:17:12

maimi09
メンバ
From: キャリングハンドル付き都庁舎
登録日: 2007-06-13

Re: h8300-elf-gccインストール

T.O による投稿:

こんばんわ
懲りずにまた質問させて頂きたいと思います。

H8クロスコンパイラで、elf形式のgccを構築しようと
下記の組み合わせ(複数のサイトなどでおすすめとあったため:深い意味はないです)で
gccのコンパイルまではうまくいきました。

・binutils-2.19.1
・gcc-3.4.6
・newlib-1.18.0

ところが、sudo make installを実行すると

h8300-elf-ranlib:コマンドが見つかりません

とエラーを吐き出し止まってしまいます。

クロス開発環境の構築は組み込み向けクロス開発環境の構築の手順が参考になります。

h8300-elf-ranlibというのはbinutilsのほうに入っている代物だったとおもいますので、gccやgdbなどをビルドする前にbinutilsをインストールしたPATHが通っているひつようがあります。
また(やったっことないですが)gccの$srcdir にbinutilsのソースディレクトリへシンボル張ってconfigureで--with-binutilsとか指定する方法もあるのかもしれません。

オフライン

 

Board footer

Powered by FluxBB