• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:UnixのグラフィックアプリをDLして)

ノーチラスから実行するとできるが、端末からはエラーが出る理由

このQ&Aのポイント
  • Unixのグラフィックアプリxmangekyouをノーチラスから実行すると正常に動作するが、端末から実行しようとするとエラーが発生する。
  • xmangekyouの実行ファイルは存在しているが、端末からのコマンド入力がうまく認識されていない可能性がある。
  • 解決策として、パスの設定が正しくされていないため、システムがxmangekyouを見つけられないのかもしれない。

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

  • ベストアンサー
回答No.1

一般ユーザならそういうのもありかな。とは思うんですが、 rootのPATHにカレントディレクトリが含まれる様な設定は聞いた事がないです。 他のプログラムはカレントディレクトリで実行できますか? 因みに私の立ててるサーバのrootは、 PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin/X11:/usr/X11R6/bin:/root/bin" の様になってます。 ./hogeか、 /path/to/binary/hogeで、 やってはどうですか?

参考URL:
http://www.ut-info.com/linux-security/path.html
keyguy
質問者

お礼

ありがとうございます カレントディレクトリが必ずしもパスが通っていないのですね フルパスで実行できました [xmangekyou-2.0.1]# /root/xmangekyou-2.0.1/xmangekyou

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 共有ライブラリ作成時の -L

    sub1.c sub2.cからlibsub1.so libsub2.soを作成し、main.cをコンパイルします。 いずれのファイルも/rootにあります。 ここで gcc -c sub1.c gcc -shared -o libsub1.so sub1.o gcc -c sub2.c gcc -shared -o libsub2.so sub2.o gcc -o main main.c libsub1.so  libsub2.so だけでは [root@localhost ~]# ldd main linux-gate.so.1 => (0x0020d000) libsub1.so.1 => not found libsub2.so.1 => not found libc.so.6 => /lib/libc.so.6 (0x003e3000) /lib/ld-linux.so.2 (0x003c4000) でロードされていないので ln -s /root/libsub1.so /usr/lib/libsub1.so ln -s /root/libsub2.so /usr/lib/libsub2.so で/usr/libにシンボリックリンクを張る必要があります。 このリンクをはる作業をなんとかしてコンパイラのオプションを用いて省略したいとおもっています。 そこで gcc -o main main.c -L/root/libsub1.so -L/root/libsub2.so としたのですが /tmp/cc4Ccfom.o: In function `main': main.c:(.text+0x12): undefined reference to `print' collect2: ld はステータス 1 で終了しました make: *** [main] エラー 1 になってしまいました。 上の状況で質問は2つあります。 (1)gccのオプションを用いてシンボリックリンクを張る作業を省略するにはどうすればいいでしょうか?(私はーLの使い方を見よう見まねで用いたのですがまずかったようでエラーがでました。) (2)上のエラーは何が原因だったのでしょうか? ソースは //sub1.c #include "sub.h" int TEST=10; //sub2.c #include "sub.h" #include <stdio.h> void print(void) { if(TEST) printf("TEST is HOGE!\n"); } //main.c #include "sub.h" #include <stdio.h> int main(void) { print(); return 0; } //sub.h extern int TEST; です。 どちらかでも回答できるかたがいらっしゃれば、お願いします。

  • コンパイルできません

    public class AutoReturnMailet extends GenericMailet{ public void service(Mail mail) throws MessagingException {      --中略ーー getMailPart(address, subject, mailBody); } public void getMailPart(Address[] address, String subject, StringBuffer mailBody){ String sv = "localhost"; String db = "mydiaryhp"; String user = "root"; String pass = "diarykey"; String encod = "EUC_JP"; String sql = "INSERT INTO diary(address, subject, mailBody) VALUES(" + "'" + address + "'," + subject + "'," + mailBody + ")"; init(); updateSQL(sql); fin(); public void init(){ --中略-- } public void fin(){ --中略-- } public void updateSQL(String sql){ --中略-- } } } 上のプログラムをコンパイルしようとしても public void init(){ の部分で「式の開始が間違ってます」とのエラーが出ます。 なぜか教えてください。

    • ベストアンサー
    • Java
  • UNIXの勉強

    下のようなディレクトリ中のファイルを出力するプログラムを作りました #include <sys/types.h> #include <dirent.h> #include "ourhdr.h" int main(int argc, char *argv[]) { DIR *dp: struct direct *dirp; if (argc != 2) err_quit("a single argument (the directory name) is required"); if ( (dp = opendir(argv[1]) ) == NULL) err_sys("can't open %s", argv[1]); while ( (dirp = readdir(dp) ) !=NULL) printf("%s\n", dirp->d_name); closedir(dp); exit(0); } windowsのcygwinでコンパイラしようとしたのですが、 ourhdr.h : NO such file or directory のように表示されコンパイルできません。どうすれば、コンパイルできるようになるのか教えてください。

  • 分割ファイルのコンパイル

    $gcc Bprop.c init.c prop.c state.c head.h main.c memory.c read.c -lm -g 以上のように複数のファイルをコンパイルしたら以下のようなエラーが表示されました。 gcc: compilation of header file requested この場合は自分で作成しているヘッダファイルに問題があるのでしょうか?またヘッダファイル内では以下のヘッダを読み込んでいます。 stdio.h string.h stdlib.h math.h time.h ヒントをよろしくお願いします。

  • LinuxでMRTGとsnmpwakerの使い方に

    LinuxでMRTGとsnmpwakerの使い方について教えて下さい。 http://www.atmarkit.co.jp/flinux/rensai/root08/root08c.html ↑を参照してMRTGを構築しました。 ですがhttpdのプロセスの数が取得できません。 snmpwalkerコマンドをたたくと以下のようになり11で値はとれていそうです。 [root@localhost ~]# snmpwalk -v 1 -c public 192.168.1.50 .1.3.6.1.4.1.2021.2.1.5.1 UCD-SNMP-MIB::prCount.1 = INTEGER: 11 [root@localhost ~]# snmpwalk -v 1 -c public 192.168.1.50 .1.3.6.1.4.1.2021.2.1.5 UCD-SNMP-MIB::prCount.1 = INTEGER: 11 [root@localhost ~]# snmpwalk -v 1 -c public 192.168.1.50 .1.3.6.1.4.1.2021.2.1 UCD-SNMP-MIB::prIndex.1 = INTEGER: 1 UCD-SNMP-MIB::prNames.1 = STRING: httpd UCD-SNMP-MIB::prMin.1 = INTEGER: 1 UCD-SNMP-MIB::prMax.1 = INTEGER: 20 UCD-SNMP-MIB::prCount.1 = INTEGER: 11 UCD-SNMP-MIB::prErrorFlag.1 = INTEGER: 0 UCD-SNMP-MIB::prErrMessage.1 = STRING: UCD-SNMP-MIB::prErrFix.1 = INTEGER: 0 UCD-SNMP-MIB::prErrFixCmd.1 = STRING: [root@localhost ~]# mrtg.confは Target[httpd]: .1.3.6.1.4.1.2021.2.1.5.1&.1.3.6.1.4.1.2021.2.1.5.1:public@192.168.1.50: のようにかいています。 どこか間違っていますでしょうか? また [root@localhost ~]# snmpwalk -v 1 -c public 192.168.1.50 .1.3.6.1.4.1.2021.2.1.5.1 UCD-SNMP-MIB::prCount.1 = INTEGER: 11 [root@localhost ~]# snmpwalk -v 1 -c public 192.168.1.50 .1.3.6.1.4.1.2021.2.1.5 UCD-SNMP-MIB::prCount.1 = INTEGER: 11 で同じ値がかえっていますが、Target[httpd]: .1.3.6.1.4.1.2021.2.1.5.1&.1.3.6.1.4.1.2021.2.1.5.1と指定しなければいけないのでしょうか?

  • unixへのSMTPコマンドでメールが送れません

    windows2000のPC1台と、SolarisOSを積んだunix機が1台(Postfixが素人によりインストールされている状態)あります。 windows2000から、フリーソフトTeraTermを使い、telnetでunix機の25番ポートにSMTPコマンドで 下記のようにメールを送りましたが、エラーが出てしまいます。関係あるかわかりませんが、 resolv.confには社内DNSアドレスが正しく記入されていました。 エラーから、ホストかドメインが見つからなくて、DNSに関連しているだろうことはわかりました。 解決へのヒントをください。よろしくお願いします。 【送ったコマンド】------------------------------------------------------ telnet localhost 25 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 tokyo_unix.localdomain ESMTP Postfix mail from:tekito@ezweb.ne.jp 250 2.1.0 Ok rcpt to:root@tokyo_unix.localhost 250 2.1.5 Ok data 354 End data with <CR><LF>.<CR><LF> from:tekito@ezweb.ne.jp to:root@tokyo_unix.localhost subject:test date:2008/1/24 10:20:30 送信テスト . 250 2.0.0 Ok: queued as 1A34567DA quit 221 2.0.0 Bye Connection to localhost closed by foreign host. 【エラー】------------------------------------------------------------ 3E84667C0 351 Wed Jan 23 09:17:40 tekito@ezweb.ne.jp (Host or domain name not found. Name service error for name=localdomain type=A: Host not found) root@tokyo_unix.localhost F2A2C678B 336 Mon Jan 21 09:51:14 tekito@ezweb.ne.jp (delivery temporarily suspended: Host or domain name not found. Name service error for name=localdomain type=A: Host not found) root@tokyo_unix.localhost --------------------------------------------------------------------

  • H8マイコンによるIRQ0割り込み処理について質問です。C言語を使って

    H8マイコンによるIRQ0割り込み処理について質問です。C言語を使っています。開発環境はUbuntu 10.04 LTS - Lucid Lynx -です。 リスト1(experiment.c)のソースプログラムをmakeコマンドでコンパイルしたのですが、リスト2のエラーメッセージが出てしまいます。ちなみに、リスト3がMakefileです。 リスト1ーーーーーーーーーーーーーーーーーーーーーーーーーー #include"3664.h" #pragma interrupt void int_irq0(void) { CLI(); IRR1 &= 0xfe; PDR5 = (PDR5++)&0x3f | (PDR5 & 0xc0); STI(); } int main() { init_led(); init_irq0(); PDR5 = (0x00 & 0x3f) | (PDR5 & 0xc0); /* PDR5 は,port5 のデータレジスタ*/ while(1){ SLEEP(); } } リスト2ーーーーーーーーーーーーーーーーーーーーーーーーーー owner@ubuntu:~/h8test$ make h8300-hms-gcc -O -mh -g -mrelax -mint32 -DH8_3664 -c -o experiment.o experiment.c h8300-hms-gcc -O -mh -g -mrelax -mint32 -DH8_3664 -c -o h8c.o h8c.c h8300-hms-gcc -O -mh -g -mrelax -mint32 -DH8_3664 -T h8_link.x -nostdlib h8_start.s \ experiment.o h8c.o -o h8exp.exe -lc -lgcc experiment.o: In function `_main': experiment.c:16: undefined reference to `_init_irq0' collect2: ld はステータス 1 で終了しました make: *** [h8exp.exe] エラー 1 リスト3ーーーーーーーーーーーーーーーーーーーーーーーーーー TARGET = h8exp.mot CFLAGS = -O -mh -g -mrelax -mint32 -DH8_3664 TOOL_PREFIX = h8300-hms- CC = $(TOOL_PREFIX)gcc LDSCRIPT = h8_link.x CRT0 = h8_start.s SRCS = experiment.c FUNC = h8c.c all : $(TARGET) $(TARGET): $(TARGET:.mot=.exe) $(TOOL_PREFIX)objcopy -O srec $(TARGET:.mot=.exe) $@ $(TARGET:.mot=.exe): Makefile $(LDSCRIPT) $(SRCS:.c=.o) $(FUNC:.c=.o) \ $(CRT0) $(LIBS) $(CC) $(CFLAGS) -T $(LDSCRIPT) -nostdlib $(CRT0) \ $(SRCS:.c=.o) $(FUNC:.c=.o) -o $@ $(LIBS) -lc -lgcc write: h8write -3664 $(TARGET) /dev/ttyS0 clean : rm -f $(TARGET) rm -f $(TARGET:.mot=.exe) rm -f $(SRCS:.c=.o) rm -f $(FUNC:.c=.o) エラー通り、ソース(experiment.c)の16行め「init_irq0()」が問題でしょうか。init で初期化しているので文法的に変でない限りステータス1で終了しないと思うのですが。予想でも結構なので解決方法を教えてください。回答よろしくお願いします。(最後に、長文になってしまいすみませんでした。)

  • execlp関数で「grep -lr hoe /home/root」が実行させるには?

    RedHat9で以下のようにexeclp関数使って 「grep -lr hoe /home/root」 を実行させる実験をしています。でも $ cat ./test1.c #include<stdio.h> int main(void){ execlp("hoge1","-lr","hoe","/home/root"); return 0; } $ cat ./hoge1.c #include<stdio.h> int main(int argc,char *argv[]){ system("grep,argv[0],argv[1],argv[2]"); return 0; } $ gcc -o test1 test1.c $ gcc -o hoge1 hoge1.c $ ./test1 sh: line 1: grep,argv[0],argv[1],argv[2]: command not found となってしまいます。 どのようにコーディングすればいいのでしょうか?

  • FedoraCore5へのffmpegのインストール

    FedoraCore5へffmpeg-0.4.9-pre1を インストールしようとしています。 オプション指定なしで./configureして makeすると以下の様なエラーがでます。 [root@localhost ffmpeg-0.4.9-pre1]# make make -C libavcodec all make[1]: Entering directory `/root/ffmpeg-0.4.9-pre1/libavcodec' gcc -O3 -g -DHAVE_AV_CONFIG_H -I.. -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_GNU_SOURCE -c -o common.o common.c In file included from avcodec.h:14, from common.c:28: common.h:67: error: 配列の型が不完全要素型を持っています common.h:71: error: 配列の型が不完全要素型を持っています make[1]: *** [common.o] エラー 1 make[1]: Leaving directory `/root/ffmpeg-0.4.9-pre1/libavcodec' make: *** [lib] エラー 2 このエラーを回避するためにはどうしたらよいのでしょうか?

  • makeコマンドのエラー

    makeコマンドをうつと下記のエラーがでます。 すみませんが、原因教えて頂けますでしょうか? [root@localhost nkf207]# make cc -O -c utf8tbl.c make: cc: コマンドが見つかりませんでした make: *** [utf8tbl.o] エラー 127