2013-09-26 32 views
0

當我編譯時,我得到一組奇怪的錯誤。 這是我第一次編譯。 (這是從我的makefile生成的。)架構的未定義符號 - 奇怪的消息

gcc -Wall -g -std=gnu99 -pedantic -c error.c -o error.o 
gcc -Wall -g -std=gnu99 -pedantic -c agent.c -o agent.o 
gcc -Wall -g -std=gnu99 -pedantic -c io.c -o io.o 
gcc -Wall -g -std=gnu99 -pedantic -c map.c -o map.o 

然後歸結爲它與我的處理程序一起鏈接;我使用這個:

gcc -Wall -g -std=gnu99 -pedantic error.o agent.o io.o map.o handler.c -o handler 

它輸出一條消息,我無法找到有關信息。有任何想法嗎?

Undefined symbols for architecture x86_64: 
    "_m", referenced from: 
    _print_map in io.o 
    _read_map in io.o 
    _check_row in map.o 
    _get_start_pos in map.o 
    _move_one_step in map.o 
    _displayMoveOnMap in map.o 
    _reset_map in map.o 
    ... 
    (maybe you meant: _reset_map, _move_one_step , _print_map , _read_map , _main) 

我認爲這只是一個小小的Makefile調整,但我找不到這些錯誤。

+0

print_map(),read_map()等你的代碼?看起來像一個丟失的對象文件。 – John3136

+0

@ John3136是的,他們都在我的代碼。在頭文件中聲明等我以爲我把它們連接到處理程序? –

+0

你是如何編寫這麼多代碼而不進行測試的? – Beta

回答

1

聽起來就像你在io.c和map.c中有一個extern m(我不知道是什麼類型,或者甚至是函數),但是沒有在任何地方定義它。我在map.h尋找extern聲明,雖然這只是一個猜測。

+0

嗨它是這個問題,然後它出現了一個重複的聲明警告,沒有進行搜索,出於某種原因,我在頭上聲明瞭一個struct NULL。非常感謝你@rici –