• ベストアンサー

Linuxのファイルシステムへのプログラムの登録方法について

はじめまして。以下の件につきまして、もしご存知の方がいらっしゃいましたら、ご回答のほどよろしくお願いいたします。 LINUXカーネルをコンパイルするとファイルシステムができあがりますが、/usr とか /opt とか、そういったディレクトリの中にお手製のアプリケーションを配置したい場合には、カーネルコンパイルの前に、どこのファイルをどのように触ればよいのでしょうk。 以上、宜しくお願いいたします。

  • kigin
  • お礼率64% (37/57)

質問者が選んだベストアンサー

  • ベストアンサー
  • xjd
  • ベストアンサー率63% (1021/1612)
回答No.2

>そういったディレクトリの中にお手製のアプリケーションを配置したい場合 あなただけが使うのなら、~/bin/ 等に配置して、実行権を与えて、 ~/.bashrc 等でパスを通しておけばよいでしょう。 みんなに使ってもらうなら、/usr/local/bin とか、/usr/local/アプリ/ /opt/アプリ/ 等が定石です。 /etc/bashrc などに、そこのパスを通しておけば、どのユーザも利用できます。 (ライブラリ用のパスなども定義が必要な場合があります。) フリーソフトなどは、コンパイルする時に ./configure --prefix=/usr/local などインストール先を指定します。大抵はデフォルトで/usr/local 配下にインストールされます。

kigin
質問者

お礼

お礼が遅くなって申し訳ありません。 お早々なご回答、ありがとうございます。 参考にさせて頂きます。

その他の回答 (1)

回答No.1

>LINUXカーネルをコンパイルするとファイルシステムができあがりますが できあがりません。カーネルをコンパイルすることで「できあがる」 のは、ファイルシステムにアクセスするための「ドライバ」であって、 実際のファイルシステムが「できあがる」わけじゃありません。 >/usr とか /opt とか、そういったディレクトリの中にお手製のア >プリケーションを配置したい場合には、カーネルコンパイルの前 >に、どこのファイルをどのように触ればよいのでしょう 実行属性をつけてパスの通ったディレクトリにコピーすればい いだけです。ライブラリ関係がちゃんとしていれば、ちゃんと 実行できます。 だいたい、アプリケーションのインストールと、カーネルコン パイルの間には、直接関係有りません。 なんというアプリケーションを使用したいのか知りませんが、 そのソフトに「INSTALL」とかいう名前のファイルが付いてい ませんでしたか?中身を読めばインストール方法が書いてありま す。

kigin
質問者

お礼

お礼が送れて申し訳ありません。 ご回答ありがとうございます。

関連するQ&A

  • 静的プログラムについて

    他のホストと共有でき、なおかつ静的コンパイルされたプログラムを配置できるディレクトリィは何? という問題に対して 答えは「/usr」とある また別の問題でFHSによると、静的アプリケーションファイルに対して共有可能なのはどのディレクトリィ? という問題に対して 答えは「/etc」とある 二つの問題は同じに見えるのですが答えが違います。 私は「/opt」が答えのような気もするのですがどうでしょうか? 回答のほどよろしくお願い致します。

  • Linuxのディレクトリへのファイル展開

    Linuxのディレクトリへのファイル展開 クロスコンパイルなどで、debパッケージのツリー構造のままコピーしたいんです。 例えば、展開したdebパッケージの~/temp/usr/bin/xxxを~/arm/rom/usr/bin/xxxに コピーする。あるいは、ディレクトリが無ければ、ディレクトリごとコピーする なんてことが必要になりますが、これを自動処理することはできないでしょうか? あるいは、自動処理のMakefileを自動で作るとか

  • linuxでのコンパイル

    linux環境でjavaソースをコンパイルしようとしているのですが、コンパイルができません。 ソースをパッケージ内に置いて、パッケージの上のディレクトリでコンパイルしようとしています。 例えば以下のような感じです。 ディレクトリ「frame」に「FrameSample.java」と「Start.java」を置き、「frame」の上のディレクトリで以下のコマンドを打ちます。 $javac frame\*.java windows環境では、これでコンパイルできるのですが、linuxだとできません。「javac: ファイルが見つかりません: frame*.java」と表示されてしまいます。 どうしたらよいでしょうか?

    • ベストアンサー
    • Java
  • intel fortran cimpilerでプログラムファイルがコンパイルできない

    こんにちは。 当方プログラムに関しては全くの初心者です。 研究で早急に計算プログラムを使用したく、 現在intel fortran cimpiler8.0を使い、とあるソースファイルをコンパイルしたいのですがうまくいきません。 コンパイルの手順としてあっているのか自信がないのですが、 とりあえずやってみて、以下のようにエラーが出ます。 $ source /opt/intel_fc_80/bin/ifortvars.csh bash: /opt/intel_fc_80/bin/ifortvars.csh: line 28: syntax error: unexpected end of file $ ifort /home/ディレクトリのパス/ファイル名.f90 ifort: error: could not find directory in which g++ resides これはどういうことなのでしょうか?? どなたかご教授お願いいたします。 ちなみに、使用しているOSはlinuxのFedora.core1です。

  • linux(redhat)ファイルシステムの復旧について

    お疲れ様です。 Linux(redhat)環境で、あるフォルダ配下をフォルダごとルート直下に移動しようとして以下のmvコマンドを投入しました。 >mv /opt/xxx/test /* コマンドの指定方法に誤りがあったのか、この後lsなどのコマンドが効かなくなってしまいました。 >/bin/ls:そのようなファイルやディレクトリはありません cdコマンドで/opt配下には移動はできるのですが、/binなどは壊れてしまったのか、移動もできません。 /bin配下のコマンドが効かず何もできない状態なのですが、何とか復旧させる手段はないでしょうか。OSを再インストールするしかないでしょうか。 ご存じの方おりましたらよろしくお願いいたします。

  • Linux の、PATHの設定&Windows とのファイルの共有について

     現在 Win98&LinuxMLD5(ネットにはPHSでたまにつなぐくらいです) という環境で、Linux と格闘中です。色々な書籍で調べてみましたが、どうにも分からず、知識のある方に教えを請いたいと思っています。質問は2つあります。どちらか片方だけでも構いませんので、よろしくお願いします。  (1)PATHの設定で、ダブっている所が在ったため(/usr/sbin:/usr/sbin など)、気になって、設定しなおそうと試みて、PATH が書かれたファイルを探しましたが、まったく見当がつかず(あるのかないのかすらよく分かりませんが)、.tcshrcや.cshrcなどを調べてみましたが、どれも「setenv PATH "${PATH}..."」などとなっていて、一体どこでPATHが設定されているのか、結局分かりませんでした。さらに、それらのファイルでは、参照するディレクトリの順番や種類が、どれもまちまちでした。  そこで質問ですが、      PATHはどこで設定されていますか?      正しい(推奨されるべき)ディレクトリの順番や種類は?      PATHに "." を含める事についての是非 を教えてください。  (2)1つのHDにWindowsとLinuxをデュアルブートしている場合、Linuxからファイルを利用できるという雑誌の記事を読んで、チャレンジしてみました。   $ mount -t msdos /dev/hda1 /mnt/mados としてみましたが、読取専用だというメッセージが出て、また /mnt/msdos ディレクトリ以下には、全くファイルが存在しないようでした。  ちなみに僕が使っているLinuxMLD5 は、Windows の FAT ファイルシステム上にLinux をインストールできるという変わり者です。それが原因なのか、それともコマンドに何か失敗があるのか、教えてください。  以上です。よろしくお願いします。

  • C言語で作られたMS/DOSプログラムをLinux用にリニューアルできますか

     C言語で作られたMS/DOSアプリケーションのソースがもし残っていたら、  Linux用にリニューアルすることは可能でしょうか。  まだ、思いつきの段階で詳しい状況も未調査なのですが、お付き合いお願いします。(分からないことだらけ…)  MS/DOSで数値を扱う割と簡単なシステムであること(と言っても自分で組むとしたら気が遠くなりそうなシステムです)。  MS/DOSのシステムがC言語で作られたかは分かりません。C言語以外には何がありますか。  1からシステムを作りなおすこともできるのでしょうが、そのMS/DOSのシステムを作った会社にリニューアルしていただきたいと考えている。ソースは残っているでしょうか?10年以上経っていると思う。  MS/DOSのシステムのハードが極度に老朽化している。  LinuxベースでC言語で作られたシステムなら、流行に左右されることなく長い年月使えるシステムになる予感がするのですがどうでしょうか。  システムを作る会社に言語を指定することはできるのかどうか。  もし、MS/DOSでソースファイルをコンパイルして実行ファイルを作っているなら、そのソースファイルを Linux上でコンパイルして実行ファイルを作れば、同じように動くのではないかと安易に考えています。手直しなどは必要なのでしょう。 仕事の内容は変わっていないので1から作りなおすなんてもったいないと思うのですが。  また、もし、C言語で作っていたら、これから将来、仕事の内容に追加事項が加わっても、積み重ねて行けるような気がするのですがどうでしょうか。  すみません。まとまらない文章になってしまいましたが、C言語なら、MS/DOSでも、Linuxでも同じようにコンパイルして、実行ファイルを作れて、また、Linuxがバージョンアップしてもソースファイルがあれば、同じように実行ファイルを作って行けるのかどうか。教えて下さい。     

  • linux/module.h インクルードできない

    もう自力ではわからず、検索しても解決できなかったので、わかる方、力を貸してください。 まず環境は Ubuntu 12.10 をVirtualBoxで動かしています。 そして、以下のパッケージをインストールしました。 linux-source-3.5.0 linux-header-3.5.0-19-generic その後、以下のソースをコンパイルしようとしました。 1 #include <linux/module.h> /* module 作成には必須 */ 2 #include <linux/kernel.h> /* printk */ 3 4 MODULE_LICENSE( "GPL" ); 5 6 static char* msg = "module [message.o]"; 7 8 9 /* 10 * モジュールの初期処理 11 * insmod 時に呼ばれる 12 */ 13 int 14 init_module( void ) 15 { 16 printk( KERN_INFO "%s : loaded into kernel\n", msg ); 17 18 /* モジュール初期化に成功したので 0 を返す 19 0 以外の値を返せば初期化失敗とみなされモジュールは 20 カーネルには組み込まれない */ 21 return 0; 22 } 23 24 25 /* 26 * モジュールの解放処理 27 * モジュールの参照数が 0 であれば、rmmod 時に呼ばれる 28 */ 29 void 30 cleanup_module( void ) 31 { 32 printk( KERN_INFO "%s : removed from kernel\n", msg ); 33 } 34 35 36 /* End of message.c */ このソース自体はネットで公開されていたもののコピペです。 これを解説を読んで、いざコンパイルというときに、 linux/module.h そのようなファイルやディレクトリはありません 上のエラーが出ます。 でも、/usr/src/linux-source-3.5.0/include/linuxの中に、module.hは確かにありました。 あったのにもかかわらず、そのようなファイルやディレクトリがありませんというのは、いったいどのような原因が考えられるのでしょうか。 自力では解決できなかったので、わかるかた教えてください。

  • Linux C言語開発 インクルードについて

    C言語開発初心者です。 LinuxでC言語開発をするにあたり、どのディストリビューションにしても インクルードしたいヘッダファイルが既定の場所には無く別の場所にカーネルのバージョンごとに保存されているようなのです。 このままコンパイルを試みるとインクルードファイルが存在しませんとエラーが返ります。 既定のヘッダファイルの保存場所にはC言語開発に必要なヘッダファイルが存在しませんので、この問題を皆さんはどのように解決しておりますか?どなたかご教授お願いいたします。 C言語でincludeする場所は<>でくくった場合 /usr/include/ 以下を参照する設定になっていると思うのですが、 例えばmodule.h やinit.h などの開発用ヘッダファイル?を探してみると /usr/include/linux/ には存在せず、 find / -name module.h と入力して検索してみると /usr/src/kernels/2.6.32-131.21.1.el6.i686/include/linux/module.h と別な場所にあります。 ネットであれやこれや調べてみても コンパイル時にincludeの参照先を指定する方法はあるようなのですが、 コンパイルする度にいちいち指定するのは面倒だと思います。(gcc -I) かといって開発しているカレントディレクトリにヘッダファイルをコピーしても includeするヘッダファイルが別のヘッダファイルを参照することもあるようなので、 あまり現実的ではないようです。 一番安全な方法としてincludeする参照先が環境変数か何かで追加及び変更するのではないかと思います。 試してみましたがenvコマンドで表示されるOSの環境変数とは別のもののようなのです。 環境変数 C_INCLUDE_PATH とはどのようにして変更・追加するのでしょう? また、上記の方法以外で良い方法がございましたらそれでもかまいません。 よろしくお願いいたします。 開発環境 ・OS centos6 ・以下のパッケージはインストール済み kernel-headers-2.6.32-131.21.1.el6.i686 kernel-devel-2.6.32-131.21.1.el6.i686 make-3.81-19.el6.i686 gcc-4.4.5-6.el6.i686 ・GUI開発環境 netbeans ・uname -r 実行結果 2.6.32-131.21.1.el6.i686

  • システムディレクトリに作られたファイル

    最近、知り合いのアドレスでウィルスメールが送ってきました。 調べたらBadtrans.Bだったのですが、私はIE5.5SP2にバージョンアップしていたので 感染はしなかったようです。 でもシステムディレクトリに KERNEL32.EXE というファイルが作成されていました。 一応不安なので修復ツールを使ったのですが、バージョンアップしていれば、システムディレクトリに作られたファイルは放っておいても良かったのでしょうか?