###環境
環境:Teraterm/LINUX
使用言語:C言語、Cシェル
初心者かつ書きかけのため、見にくかったりご不明点が多かった場合、申し訳ありません。
前提・実現したいこと
1.func.c(機能を担う)をpull.c(ファイルの入出力を担う)で呼び出して一つのexeを作りたい。2.extern関数か他の方法があるのかわからない。
3.exeを作るmakefileを完成させたい。
該当のソースコード
func.c
C
1#include <stdio.h> 2#include <stdlib.h> 3#include <ctype.h> 4 5 6int count[26]; 7 8int func(int argc, char *argv[]){ 9 FILE *fp; 10 char ch; 11 int i; 12/*文字を探す*/ 13 while (( ch = fgetc(fp)) != EOF){ 14 15/*英字の大文字小文字を変換*/ 16 ch = toupper(ch); 17/*探す範囲*/ 18 if(ch >='A' && ch <= 'z') 19 20 count[ch - 'A']++; 21 22 } 23 24 for (i = 0; i < 26; i++) 25 26 printf("%C の出現は %d 個目です。\n", i + 'A',count[i]); 27return 0; 28 29} 30
pull.c
c
1#include <stdio.h> 2 3 4int main(int argc, char *argv[]) 5{ 6 FILE *fp; 7 char ch; 8 int i; 9/*ファイル名が正しいか調べる*/ 10 11 if (argc != 2){ 12 printf("ファイル名が正しくありません。\n"); 13 exit(1); 14 } 15 16 17/*入力用にファイルを開きます*/ 18 if((fp = fopen(argv[1], "r")) == NULL){ 19 printf("ファイルを開くことができません\n"); 20 exit(1); 21 } 22 23/*exterm書き直し*/ 24extern int func{ 25 26} 27 28 29fclose(fp); 30return 0; 31 32}
makefile(csh)
csh
1#!/bin/csh -f 2 3pull.c: func.c pull.c 4 gcc -o pull.exe func.c pull.c
//ファイル名を修正いたしました。混乱を招いてしまい申し訳ありません。
発生している問題・エラーメッセージ
func.c(コンパイルエラー)
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../lib64/crt1.o: In function `_start': (.text+0x20): undefined reference to `main' collect2: ld はステータス 1 で終了しました make: *** [func] エラー 1
pull.cコンパイルエラー
pull.c: In function ‘main’: pull.c:13: 警告: incompatible implicit declaration of built-in function ‘exit’ pull.c:20: 警告: incompatible implicit declaration of built-in function ‘exit’ pull.c:24: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token make: *** [pull] エラー 1
※コンパイルにはmakefileを使っています
何が悪いのかわからなくなってしまい、迷子状態で情けない限りです。
なにかお助けを頂けましたら幸いです。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/03 10:14