我的主目錄中有以下目錄。未定義對函數的引用
源
包括
庫
在源目錄中,我有以下文件:
a.c
#include <stdio.h>
#include "a.h"
extern void function(void);
int main()
{
printf("PREDEFINED = %d\n",PREDEFINED);
function();
return 0;
}
b.c
#include <stdio.h>
void function()
{
printf("Hello from function\n");
}
a.h
#define PREDEFINED 100
我編譯b.c和移動B.0至lib文件夾。
然後我從source
夾
gcc -Wall -o temp a.c -I../include -L../Lib
試過以下命令,但它顯示以下錯誤 a.c: undefined reference to
function``
但是,當我使用下面的命令時,它產生的輸出文件而不temp
任何錯誤
gcc -Wall -o temp a.c -I../include ../Lib/b.o
我在哪裏出錯了?
你應該在頭文件中真正地定義`function()`,例如「b.h」並將其包含在「a.c」中。無論如何,你究竟在做什麼?建立「b.c」作爲圖書館?你的製作系統非常不標準。對於快速命令行構建而言,通常將所有C文件同時編譯到可執行文件中,而不用打擾目標文件。對於正確的make系統,將所有C文件編譯成目標文件並將它們鏈接到可執行文件中更爲常見。你有一個混合在這裏。 – AlastairG 2010-12-23 14:58:07