Segmentation faultとは?Ubuntu10.04で発生したSegmentation faultの解決方法について教えてください

このQ&Aのポイント
  • 生物系の大学院生がUbuntu10.04にc言語で書かれたソフト(adaptsite-d)をインストールしようとした際に、Segmentation faultというエラーが表示される問題が発生しました。
  • 問題の解決策として、READMEの内容に従いMakefileを作成し、ターミナルでmakeコマンドを実行しましたが、依然としてSegmentation faultのエラーが表示されます。
  • エラーメッセージの内容を読みながら修正を試みましたが、初期化すべき関数の場所や方法がわからず困っています。解決策を教えていただけないでしょうか。
回答を見る
  • ベストアンサー

Segmentation fault

私、生物系の大学院生ですが研究に進化の概念を取り込みたいと思い、Ubuntu10.04にc言語で書かれたであろうソフト(adaptsite-dといい、ある大学で無料配布されているものです。)をインストールしている最中です。インストールが成功したと思い、いざソフトを起動させてみるとSegmentation faultというエラーが出ます。 パソコンは全くの素人であるため問題を解決できないでいます。 どなたかお力をお貸しいただけないでしょうか。 手順は以下のようなものです。 ダウンロード後にREADMEを読んでみたところ以下のMakefileを用いてインストールするようでしたので、 Makefile ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ CC = cc all : adaptsite-d OBJECTS = adaptsite-d.1.o adaptsite-d.2.o adaptsite-d : $(OBJECTS) $(CC) -o adaptsite-d adaptsite-d.1.o adaptsite-d.2.o adaptsite-d.1.o : adaptsite-d.h adaptsite-d.1.c $(CC) adaptsite-d.1.c -lm -c adaptsite-d.2.o : adaptsite-d.h adaptsite-d.2.c $(CC) adaptsite-d.2.c -lm -c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ターミナルで $make としました。インストールが完了したと思い、このソフトをterminalから起動させると Segmentation fault Segmentation fault とSegmentation faultという文が2回表示されます。 そこで、このSegmentation faultという文をgoogleで検索してみると、あるサイト(http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=48299&forum=10)に行き着きました。内容は理解できませんでしたが、上のSegmentation faultの原因を特定する方法が書いてあることは理解できたため、 Makefikeを以下のように書き換え(-Wall -O2 を追加)、 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ CC = cc all : adaptsite-d OBJECTS = adaptsite-d.1.o adaptsite-d.2.o adaptsite-d : $(OBJECTS) $(CC) -Wall -O2 -o adaptsite-d adaptsite-d.1.o adaptsite-d.2.o adaptsite-d.1.o : adaptsite-d.h adaptsite-d.1.c $(CC) -Wall -O2 adaptsite-d.1.c -lm -c adaptsite-d.2.o : adaptsite-d.h adaptsite-d.2.c $(CC) -Wall -O2 adaptsite-d.2.c -lm -c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ terminalで $make とすると、 adaptsite-d.1.c: In function ‘main’: adaptsite-d.1.c:30: warning: ‘brlen1’ may be used uninitialized in this function adaptsite-d.1.c:30: warning: ‘brlen2’ may be used uninitialized in this function cc -Wall -O2 adaptsite-d.2.c -lm -c adaptsite-d.2.c: In function ‘funccod’: adaptsite-d.2.c:32: warning: ‘aab’ may be used uninitialized in this function cc -Wall -O2 -o adaptsite-d adaptsite-d.1.o adaptsite-d.2.o といったエラーメッセージが表示されました。 おそらく、adaptsite-d.2.cの文中のbrlen1とbrlen2、adaptsite-d.2.cの文中のaabという関数?を初期化すればいいというメッセージだと思うのですが、どこに何を書き足せばいいのか全く検討がつきません。 どなたか解決策を教えていただけませんか。よろしくお願いします。

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

  • ベストアンサー
  • asuncion
  • ベストアンサー率33% (2126/6288)
回答No.1

>adaptsite-d.2.cの文中のbrlen1とbrlen2、adaptsite-d.2.cの文中のaabという関数?を初期化すればいいというメッセージだと思う ちょっと違ってます。 main関数で、brlen1とbrlen2という変数を初期化せずに使っている。 funccod関数で、aabという変数を初期化せずに使っている。 というのが、警告メッセージの正しい内容です。 というわけで、警告メッセージに行数が書いてあるとおり、 adaptsite-d.1.c というファイルの先頭から30行目前後まで と、 adaptsite-d.2.c というファイルの先頭から32行目前後まで を、貼り付けてください。 そうすれば、何かがわかるかもしれません。 あるいは、何もわからないかもしれません。あまり期待しないでください。

Murata0715
質問者

補足

返信ありがとうございます。 お手数をおかけして申し訳ありません。 ●adaptsite-d.1.c の30行目までが以下で、 #include <stdio.h> #include <stdlib.h> #include <ctype.h> #include <string.h> #include <math.h> #include "adaptsite-d.h" void main(int argc, char *argv[]) { char cod1[4], cod2[4]; char seqcod[MAXENT+MAXNODE][302][4]; int aaa, aab, aac, aad, aae, aaf, aao; int baa, bad, bae, baf, bai, baj, bak, bal, bam; int seqnum, tseqnum, seed, spec, ancest, unit, codlen[5]; double bac, bah; double aam, f, func[5], sqdv, codfre[5][3][63], mut[4], m[6][6], p[5][63][63]; double eds[5], edn[5], bunshs[5], bunbos[5], bunshn[5], bunbon[5], totalshs, totalbos, totalsyn, ratio; /* totalchg, totalnuc */ double codres[5], thresh[63], ttest; struct codons{char cod[4]; char aa; double syn; double non;}; struct codons codon[63]; char frag1, buffer[MAXBUF]; char otu[MAXNAME]; char blen[MAXDIG]; int aa; /****** A variable for buffer[sequence] ******/ int ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al; int otunum, newnum, otunum1, otunum2; int otus1, otus2; double brlen1, brlen2; double branlen1, branlen2; /******@@@@@@ From the top to here is OK @@@@@@******/ ●adaptsite-d.2.c の32行目までが以下です。 #include <stdio.h> #include <stdlib.h> #include <ctype.h> #include <string.h> #include <math.h> #include "adaptsite-d.h" void funccod(char *codon3, char *codon4, double *count) { double TTT[3], TTC[3], TTA[3], TTG[3]; double CTT[3], CTC[3], CTA[3], CTG[3]; double ATT[3], ATC[3], ATA[3], ATG[3]; double GTT[3], GTC[3], GTA[3], GTG[3]; double TCT[3], TCC[3], TCA[3], TCG[3]; double CCT[3], CCC[3], CCA[3], CCG[3]; double ACT[3], ACC[3], ACA[3], ACG[3]; double GCT[3], GCC[3], GCA[3], GCG[3]; double TAT[3], TAC[3]; double CAT[3], CAC[3], CAA[3], CAG[3]; double AAT[3], AAC[3], AAA[3], AAG[3]; double GAT[3], GAC[3], GAA[3], GAG[3]; double TGT[3], TGC[3], TGG[3]; double CGT[3], CGC[3], CGA[3], CGG[3]; double AGT[3], AGC[3], AGA[3], AGG[3]; double GGT[3], GGC[3], GGA[3], GGG[3]; int aaa, aab; どうぞよろしくお願いします。

その他の回答 (1)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

おそらくですが、そのプログラムは計算部分にだけ注力しているものではないでしょうか。 研究用とかサンプルとかのプログラムの場合、「入力はすべて正しい」という前提で、エラー処理を行なっていない、ということがよくあります。 例えば、実行は「コマンド 入力ファイル 出力ファイル」という形式しか受け付けない場合。 一般には引数を確認して、不正な場合は処理をしないで終了します。(例: cp とだけ入力してみてください) ところが、「正しい」ことを前提にしているソフトでは、存在しない引数から存在しないファイル名を受け取りって読み書きしようとして、思わぬ結果になります。 Segmentation Faultもその一つです。 他にも、異常なパラメータ( 0<x<1が求められるところに0が指定してある)とか、ファイル形式の違い(数値が書いてあるべきところにアルファベット)とかも、チェックしていないケースがあります。 もう一度使いかたをよく読んで正しく使用してみてください。 > adaptsite-d.2.cの文中のbrlen1とbrlen2、adaptsite-d.2.cの文中のaabという関数?を初期化すればいい 関数ではなく変数です。 Cでは初期化しない場合、変数の中身がどうなっているかわかりません。a=brlen1 + brlen2 等とした場合に、brlen1,brlen2が初期化されていなかったらaの値がどうなるかまったくわからない、ということで、そのような警告が用意されています。 ただ、その警告はプログラムを完全に理解してのものではありません。例えば、 if ( f>0) { a=brlen1 + brlen2 ; } else { brlen1=0;brlen2=0; } 等とあった場合、最初からf>0だったら、確かにbrlen1は初期化される前に使われています。 しかし、プログラムの構成上、fは絶対に0から始まっていて、thenの部分がelseより先に実行されることは絶対にない、という場合でも、この警告はでます。 [fは絶対に0から始まっていて]ということがわからないからです。 警告を無くすだけだけなら、適当な値を代入すれば出なくなります。 しかし、プログラム全体としてそれが正しいかは、プログラムの動作を把握する必要があります。 とりあえず、今の段階では無視しておくのがよいと思います。

Murata0715
質問者

お礼

返信ありがとうございました。 Segmentation faultというメッセージが出たことに関して理解ができました。 READMEを一度読み返してソフトが動くまで試行錯誤してみようと思います。

関連するQ&A

  • fscanf Segmentation fault

    すいません。Segmentation faultがでてプログラムが動きません・・・原因がわからないのでわかる方がおられましたら教えてください。 FILE* Bank::setFp( const char c[]){ if(fp!=NULL){ fclose(fp); }else{ fp = fopen("c[]","r"); } return fp; } Bank::Bank(char c[]){ fp = 0; size = 0; arraySize = 0; int some = 0 ; int bal; char ac[16]; char cust[316]; fp = setFp(c); fscanf(fp, "%d:",&some); grow(arraySize+10); for(int i=1 ; i<arraySize ; i++){ fscanf(fp, "%[^,],%d,[^;];",arraySize,ac,&bal,cust); savings[i].init(cust,ac,bal); size++; fclose(fp); } } ちなみにSegmentation fault は fscanf(fp, "%d:",&some);を作動した時にでました。 ちなみにサンプルデータは、 3:423423454567987,9234617,Woo,Charles,Winnipeg,416-555-5558;523423454567987,2534,DeJesus,Pancho,Edmonton,416-555-5559;623423454567987,543876,Smith,Bob,Charlottetown,416-555-5544; です。 メインプログラムでは、Bank one("a34.dat");と読んでるだけです。 よろしくお願いします

  • Segmentation fault その2

    ダイクストラ法を用いて最短経路を表示するプログラムなんですが void daijkstra(int a) { //count[] この関数では定義していません(この外です) int g, b, c, d, e, f; //アクセス出来る点を探索. for(b = 0, c = 0;b != ten;b++){ if(adj[a][b] == INT_MAX || a == b) continue; else{ if(no_loop[b] != ten * hen){ count[c] = b;//アクセス出来た点を入力. c++; no_loop[b] = no_loop[b] + 1; } } } count[c] = -1; for(d = 0;count[d] != -1; d++){ c = count[d]; if(place[c] == INT_MAX){ place[c] = adj[a][c] + place[a]; } else{ g = adj[a][c] + place[a]; if(g < place[c]){ place[c] = g; } } } for(e = 0;count[e] != -1;e++){ f = count[e]; daijkstra(f); } return; } こういった感じに完成しました。 ですがSegmentation fault (core dumped)と表示されどうしても出来ない場合が時々あるんです.(main 関数でネットワークをランダムに生成しています。上記の関数だけでは情報が少ない場合はmainを載せます。) スタックオーバーフロウが起きているのは確実なんですがそれを回避する術を知らないのでどうかご協力をお願いします. ten * hen を1に変更すると2回目にアクセスした場合に2回目の方が短い場合更新できなくなるので1以上にして、ten * henは全ての点に全部の辺が付いていると考えた『これ以上はないはず』といういみがあります

  • C言語 Segmentation fault

    program SPROGRAM 17 4 pas104 SIDENTIFIER 43 4 ( SLPAREN 33 4 上記のようなファイルを読みこんで、1行づつ各トークン(programとか17とか)を構造体に格納する関数reader()を作りましたが、これを以下のparser.cで呼びだすと「Segmentation fault(core dumped)」となってしまいます。gdbのrunコマンドでプログラムを実行すると、関数を呼び出す所で Program received signal SIGSEGV, Segmentation fault. 0x0040140f in reader () と表示されました。が,どうすればよいか全然分かりません・・・ どうすれば正しく動作してくれるのか、どなたか教えてください・・・ 以下ソース /*read.c*/ #include "head.h" void reader(void) { fprintf(stdout,"check"); char buf[BUF_LEN]; if (fgets(buf,sizeof(buf),fp) == NULL)/*ここで1行読みこむ*/ {/*いきなりNULLの場合*/ strcpy(t.str, ""); t.num = SEOF; t.line = 1; } else { 省略 } return; } /*parser.c*/ #include "head.h" struct tokenbox t; FILE *fp; int main(int argc, char *argv[]) { if (argc != 2)/*引数チェック*/ { fprintf(stderr,"Usage: (./parser) (file.ts)\n"); return -1; } int len; len = strlen(argv[1]);/*file.ts の長さ取得*/ if((argv[1][len-1] == 's') && (argv[1][len-2] =='t') && (argv[1][len-3] == '.'))/*tsファイルが指定されているかどうか*/ { fp = fopen(argv[1],"r");/*ファイルオープン*/ if (fp == NULL) { fprintf(stderr,"Such ts file is not exist\n"); return -1; } fprintf(stdout,"authenticate ts file!\n");//←これは出力される reader(); //←ここでSegmentation faultと思われる printf("t.str = %s\n", t.str); printf("t.str[0] = %c\n", t.str[0]); printf("t.num = %d\n", t.num); printf("t.line = %d\n", t.line); fclose(fp); return 0; } else { fprintf(stderr,"the file is not ts\n"); return -1; } } ヘッダファイル一部抜粋 /*head.h*/ #include <stdio.h> #include <string.h> #include <stdbool.h> #define BUF_LEN 128 #define TOKEN_LEN 128 struct tokenbox {/*tsファイルの各情報を格納する構造体*/ char str[TOKEN_LEN]; int num; int line; }; extern struct tokenbox t;/*構造体をtと置く*/ extern FILE *fp; /*ファイルポインタ*/

  • zshrcのfunctionの作り方

    C言語のコンパイルの際、 gcc -Wall -o xxx xxx.c と入力する手間を省きたいので、rcファイルに function gcc () { gcc -Wall -o "$1%.c" "$1" } としているのですが、 gcc xxx.c を実行するとターミナルが落ちてしまいます。 何がいけないのでしょうか。 %.c は、 .cを除く目的で使っています。

  • Segmentation fault

    Cygwinにてアルゴリズムの勉強のためにC言語で コーディングしているのですが、Segmentation fault (core dumped) という言葉が出てファイルを実行できません。 試行錯誤しているのですが手に負えません。 よろしくお願いします。 #include <stdio.h> #include <stdlib.h> #define MAX_LINE 30 int main(void); int main(void){ char buffer[3]; int taro,hanako,number; int judge[4][4] = {{3,1,2,2,},            {2,3,1,2,},             {1,2,3,2,},             {1,1,1,3,},                 }; char kekka[3][MAX_LINE] = {"太郎の勝ち", "花子の勝ち", "あいこ" }; gets(buffer); taro = atoi(buffer); taro = taro-1; gets(buffer); hanako = atoi(buffer); hanako = hanako-1; number = judge[taro][hanako]; printf("じゃんけんの結果は%sです。",kekka[number][MAX_LINE]); return(0); }

  • segmentation fault

    ソースは以下です 途中までは実行されるんですけど,,, 教えてください #include <stdio.h> #include <stdlib.h> #include <math.h> #define M_PI 3.14159265358979 /* 円周率 */ int main(int argc, char **argv) { int xsize,ysize,depth,x,y,c; char code[10]; FILE *fp; unsigned char ***image,***outimage; double sum_kido,sum_kido_x,grad; int xmax,xmin,ymax,ymin,count; char grad_im; int sumx, sumy, N; char dummy[1024]; double Deltax; double Deltay; if(argc != 3){ fprintf(stderr,"Usage : a.out input_filename output_filename\n"); exit(1); } if((fp=fopen(argv[1],"r"))==NULL){ fprintf(stderr,"File can not open : %s\n",argv[1]); exit(1); } fscanf(fp,"%s",code); /* fscanf(fp,"%s",dummy); */ fscanf(fp,"%d %d",&xsize,&ysize); fscanf(fp,"%d ",&depth); fprintf(stderr,"%s, %d, %d, %d\n",code,xsize,ysize,depth); getchar(); image = (unsigned char ***)malloc(sizeof(unsigned char**)*ysize); for(y=0;y<ysize;y++){ image[y] = (unsigned char **)malloc(sizeof(unsigned char*)*xsize); for(x=0;x<xsize;x++){ image[y][x] = (unsigned char *)malloc(sizeof(unsigned char)*3); } } outimage = (unsigned char ***)malloc(sizeof(unsigned char**)*ysize); for(y=0;y<ysize;y++){ outimage[y] = (unsigned char **)malloc(sizeof(unsigned char*)*xsize); for(x=0;x<xsize;x++){ outimage[y][x] = (unsigned char *)malloc(sizeof(unsigned char)*3); } } // load image for(y=0;y<ysize;y++){ for(x=0;x<xsize;x++){ for(c=0;c<3;c++){ image[y][x][c] = (unsigned char)(fgetc(fp)); printf("%d\n", image[y][x][c]); } } } fclose(fp); sumx = 0; sumy = 0; N = 0; for(y=0;y<ysize;y++){ for(x=0;x<xsize;x++){ if((image[y][x][0]*2<image[y][x][2])&&(image[y][x][1]*2<image[y][x][2])){ outimage[y][x][0]=255; outimage[y][x][1]=0; outimage[y][x][2]=0; }else{ outimage[y][x][0]=image[y][x][0]; outimage[y][x][1]=image[y][x][1]; outimage[y][x][2]=image[y][x][2]; sumx += x; sumy += y, N += 1; } } } // output image if((fp=fopen(argv[2],"w"))==NULL){ fprintf(stderr,"File can not open : %s\n",argv[2]); exit(1); } fprintf(fp,"%s\n",code); fprintf(fp,"%d %d\n",xsize,ysize); fprintf(fp,"%d\n",depth); count = 0; for(y=0;y<ysize;y++){ for(x=0;x<xsize;x++){ for(c=0;c<3;c++){ fputc(outimage[y][x][c],fp); } } } fclose(fp); fprintf(stdout, "%d, %d, %d, Gravity (x,y) = (%lf, %lf)\n",sumx,sumy,N,(double)(sumx)/(double)(N), (double)(sumy)/(double)(N)); for(y=0;y<ysize;y++){ for(x=0;x<xsize;x++){ Deltax = sqrt(( pow (image[x+1][y][0] , 2.0 ) + pow (image[x+1][y][1] , 2.0 ) + pow (image[x+1][y][2] , 2.0 )) - ( sqrt( pow (image[x-1][y][0] , 2.0) + (image[x-1][y][1] , 2.0) + (image[x-1][y][2] , 2.0)))); Deltay = sqrt(( pow (image[x][y+1][0] , 2.0 ) + pow (image[x][y+1][1] , 2.0 ) + pow (image[x][y+1][2] , 2.0 )) - ( sqrt( pow (image[x][y-1][0] , 2.0) + (image[x][y-1][1] , 2.0) + (image[x][y-1][2] , 2.0)))); } } for(y=0;y<ysize;y++){ for(x=0;x<xsize;x++){ double T = atan( Deltax / Deltay ); //勾配ベクトルの方向 double U = sqrt( pow ( Deltax , 2.0 ) + pow (Deltay , 2.0 ) ); //勾配ベクトルの勾配量  double V = atan( ( x - (double)(sumx) / (double)(N) ) / ( y - (double)(sumy) / (double)(N) ) ); printf(" %f\n " , V - ( T + ( M_PI / 2 ))); } } }

  • Segmentation fault

    最短経路問題を解くプログラムを作って完成したのですが、でる時は連続して出てしまうのですが Segmentation fault (core dumped) と表示されてしまいプログラムが実行中なのに途中で終わってしまいます.ほんとうならネットワークの直径が表示されるんですが。。 gcc daijkstra.c ./a アクセスポイント>>> 90 全ネットワーク数>>> 50 Segmentation fault (core dumped) (表示された場合.) gcc daijkstra.c ./a アクセスポイント>>> 90 全ネットワーク数>>> 50 直径>>>>4.432 (成功した場合.)

  • RedHat9起動時にエラー

    RedHat9起動時に以下のエラーが発生してLinuxが使えません。最近パスワード入力の際にrootと入力すると、その段階でプロンプトが表示されて、パスワードの入力なしになっているなと気づきましたが、再起動をかけたら、このようなメッセージが表示されて、起動できなくなりました。 Welcome to /etc/rc.d/rc.sysinit: line 70: 34 Segmentation fault LC_ALL=C grep -q "Red Hat" /etc/redhat-release Red Hat Linux Press 'I' to enter interactive startup. Mounting proc filessytem: [FALED] /etc/rc.d/rc.sysinit: line 90: 42 Segmentation fault LC_ALL=C grep -q /initrd /proc/mounts Configuring kernel parameters: Error: /proc must be mounted To mount /proc at boot you need an /etc/fstab line like: /proc /proc proc defaults In the meantime, mount /proc /proc -t proc [FALED] /etc/rc.d/rc.sysinit: line 182: 64 Segmentation fault LC_ALL=C grep -iq "mousb" /proc/cmdline 2>/dev/null /etc/rc.d/rc.sysyinit: line 182: 66 Segmentation fault .....

  • Linuxのmake時のエラーについて

    あるプログラムをmakeすると下記のメッセージが出たのですが、どうすれば正常にmakeできますでしょうか?他のPCだとできたようです。 よろしくお願い致します。 g++ -L. -lpthread -lrt -lm -o SchedFifoTest SFthread.o SchedFifoTest.o /usr/bin/ld: SchedFifoTest.o: in function `main': SchedFifoTest.cc:(.text.startup+0x5e): undefined reference to `pthread_setaffinity_np' /usr/bin/ld: SFthread.o: in function `ARCS::SFthread::SFthread(unsigned long, void (*)(void*), void*, int)': SFthread.cc:(.text+0x2e9): undefined reference to `pthread_create' /usr/bin/ld: SFthread.cc:(.text+0x336): undefined reference to `pthread_setaffinity_np' /usr/bin/ld: SFthread.o: in function `ARCS::SFthread::~SFthread()': SFthread.cc:(.text+0x36d): undefined reference to `pthread_cancel' collect2: error: ld returned 1 exit status make: *** [Makefile:51: SchedFifoTest] エラー 1

  • Debian玄箱にドライバコンパイル不調

    Debian lenny化 した玄箱(初代)にEPSON KOWA ( 現:エプソンアヴァシス株式会社)のプリンタドライバソースファイルをコンパイル中に errorが表示されうまく適用できません。 EPSON PM-950C用のドライバのソースファイルをコンパイル中に”./libcbt.a: could not read symbols: File in wrong format”と表示されうまくいかない まず、rpm ではなく、ソースファイル「pips950-2.5.2.tar.gz」をダウンロードし、 /usr/src/pips950-2.5.2 に展開しています。 上記のエラー「 ./libcbt.a: could not read symbols: File in wrong format 」の対処方法をご教示ください。 直前のメッセージを字数制限までコピーします。 make[3]: Entering directory `/usr/src/pips950-2.5.2/ekpd' gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -c cbtd.c gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -c cbtd_comserv.c cbtd_comserv.c: In function 'comserv_thread': cbtd_comserv.c:158: warning: pointer targets in passing argument 3 of 'accept' differ in signedness gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -c cbtd_datatrans.c gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -c cbtd_setup.c cbtd_setup.c: In function 'parameter_setup': cbtd_setup.c:85: warning: pointer targets in passing argument 4 of 'get_parameter' differ in signedness gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -c cbtd_signal.c gcc -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -c cbtd_thread.c gcc -g -O2 -Wall -o ekpd cbtd.o cbtd_comserv.o cbtd_datatrans.o cbtd_setup.o cbtd_signal.o cbtd_thread.o ./libcbt.a -lpthread -ldl /usr/bin/ld: ./libcbt.a(cbtd_wrapper.o): Relocations in generic ELF (EM: 3) /usr/bin/ld: ./libcbt.a(cbtd_wrapper.o): Relocations in generic ELF (EM: 3) ./libcbt.a: could not read symbols: File in wrong format collect2: ld returned 1 exit status make[3]: *** [ekpd] Error 1 make[3]: Leaving directory `/usr/src/pips950-2.5.2/ekpd' make[2]: *** [all-recursive] Error 1 make[2]: Leaving directory `/usr/src/pips950-2.5.2/ekpd' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/usr/src/pips950-2.5.2' make: *** [all-recursive-am] Error 2

専門家に質問してみよう