[解決済み] [Solved] .Cファイルをコンパイルしています。アーキテクチャ x86_64 の未定義シンボル
2022-02-10 01:01:07
質問
.cプログラムをコンパイルすると、なぜかエラーメッセージが表示されます。
11個の警告が発生しました。 アーキテクチャ x86_64 に対して未定義のシンボルがあります。 "_main" から参照されています。 メイン実行ファイルの暗黙のエントリ/スタート ld: アーキテクチャ x86_64 のシンボルが見つかりません。 clang: error: linker command failed with exit code 1 (use -v to see invocation) リンカーのコマンドは終了コード1で失敗しました。
私のdate.cです。
#include "date.h"
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
struct date {
char *day;
char *month;
char *year;
};
/*
* date_create creates a Date structure from `datestr`
* `datestr' is expected to be of the form "dd/mm/yyyy"
* returns pointer to Date structure if successful,
* NULL if not (syntax error)
*/
Date *date_create(char *datestr) {
Date *d = (Date *)malloc(sizeof(Date));
const char delimiter[2] = "/";
char *token;
if (d != NULL) {
token = strtok(datestr, delimiter);
d->day = *token;
token = strtok(NULL, delimiter);
d->month = *token;
token = strtok(NULL, delimiter);
d->year = *token;
}
};
/*
* date_duplicate creates a duplicate of `d'
* returns pointer to new Date structure if successful,
* NULL if not (memory allocation failure)
*/
Date *date_duplicate(Date *d) {
return NULL;
};
/*
* date_compare compares two dates, returning <0, 0, >0 if
* date1<date2, date1==date2, date1>date2, respectively
*/
int date_compare(Date *date1, Date *date2) {
return 0;
};
/*
* date_destroy returns any storage associated with `d' to the system
*/
void date_destroy(Date *d) {
};
Bashの出力です。
bash-3.2$ gcc -W -Wall date.c
date.c:25:12: warning: incompatible integer to pointer conversion assigning to
'char *' from 'char'; remove * [-Wint-conversion]
d->day = *token;
^ ~~~~~~
date.c:27:14: warning: incompatible integer to pointer conversion assigning to
'char *' from 'char'; remove * [-Wint-conversion]
d->month = *token;
^ ~~~~~~
date.c:29:13: warning: incompatible integer to pointer conversion assigning to
'char *' from 'char'; remove * [-Wint-conversion]
d->year = *token;
^ ~~~~~~
date.c:37:44: warning: format specifies type 'void *' but the argument has type
'char' [-Wformat]
printf("Day: %p Month: %p Year: %p\n", *d->day, *d->month, *d->year);
~~ ^~~~~~~
%c
date.c:37:53: warning: format specifies type 'void *' but the argument has type
'char' [-Wformat]
printf("Day: %p Month: %p Year: %p\n", *d->day, *d->month, *d->year);
~~ ^~~~~~~~~
%c
date.c:37:64: warning: format specifies type 'void *' but the argument has type
'char' [-Wformat]
printf("Day: %p Month: %p Year: %p\n", *d->day, *d->month, *d->year);
~~ ^~~~~~~~
%c
date.c:40:1: warning: control reaches end of non-void function [-Wreturn-type]
};
^
date.c:47:28: warning: unused parameter 'd' [-Wunused-parameter]
Date *date_duplicate(Date *d) {
^
date.c:55:24: warning: unused parameter 'date1' [-Wunused-parameter]
int date_compare(Date *date1, Date *date2) {
^
date.c:55:37: warning: unused parameter 'date2' [-Wunused-parameter]
int date_compare(Date *date1, Date *date2) {
^
date.c:62:25: warning: unused parameter 'd' [-Wunused-parameter]
void date_destroy(Date *d) {
^
11 warnings generated.
Undefined symbols for architecture x86_64:
"_main", referenced from:
implicit entry/start for main executable
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
解決方法は?
を使用する必要があります。
main
の中の関数
date.c
. あるいは、コンパイル時に
-c
のように、この時点ではリンクせず、後でmain関数をリンクするようにします。
関連
-
[解決済み】stdinとSTDIN_FILENOの違いは何ですか?
-
[解決済み】Valgrind - strcpyのサイズ1の無効な書き込み
-
[解決済み】警告:互換性のないポインタ型からの代入
-
[解決済み】ポインタと整数の比較で警告が出る
-
[解決済み】 strcpyとstrdupの比較
-
[解決済み】警告:組み込み関数'printf'の非互換な暗黙の宣言(デフォルトで有効]
-
[解決済み】C言語で入力が整数型かどうかチェックする
-
[解決済み】未定義参照 makefile が間違っているのかも?
-
[解決済み] .soファイル内のシンボルを一覧表示する方法
-
[解決済み】高放射能環境下で使用するアプリケーションのコンパイルについて
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] (.text+0x20): `main'への未定義の参照と関数への未定義の参照
-
[解決済み】C言語におけるファイルスコープでの可変長配列の変更
-
[解決済み】GCC Cコードで静的宣言が非静的宣言に続くことを解決するには?
-
[解決済み】LEALアセンブリ命令は何をするのですか?
-
[解決済み] テスト
-
[解決済み】fgetsによるセグメンテーションフォールト(コアダンプ) - と思う。
-
[解決済み】argv[]をint型として取得するには?
-
[解決済み】警告:引数「互換性のないポインタ型から」を渡す[デフォルトで有効]。
-
[解決済み】スタックスマッシュを検出しました
-
[解決済み】Linuxソケットのwrite()でBad File Descriptorが発生するC