2010-11-05 63 views
0

尋找幫助編譯下面的程序。我得到一個「***停止,沒有目標」。在編譯器緩衝區中輸入limit.makefile時出錯。想法?UNIX - makefile幫助!

int main(int argc, char *argv[]) { 
    struct rlimit limit; 

    limit.rlim_cur = 60000; 


limit.rlim_max = 60000; 

if (setrlimit(RLIMIT_FSIZE, &limit) == -1){ 
    perror("Error preventing core dump, errno=%d\n", errno); 
    exit(1); 
    } 

else { 
    printf("The current core limit is %ll.\n", limit.rlim_cur); 
    printf("The core max limit is %ll.\n", limit.rlim_max); 
    exit(0); 
    } 

    if (getrlimit(RLIMIT_FSIZE, &limit) == -1){ 
    printf("getlimit() failed with errno=%d\n", errno); 
    exit(1); 
    } 


} 

編譯命令:make -k -f limit.makefile 這是我鍵入該編譯器的緩衝....仍然得到錯誤,但。

的Makefile:

CC = /usr/bin/gcc 
CFLAGS = -g -Wall -std=c99 -O2 -arch x86_64 
+0

你可以編輯你的問題,並把make limit.makefile在? – 2010-11-05 01:27:02

+0

您的makefile不包含任何需要編譯的文件? – EboMike 2010-11-05 01:29:13

+0

limit.c是我需要的程序。我在哪裏添加? – 2010-11-05 01:30:28

回答

2

只是試圖使-k -f myfile在一個空文件上出錯並得到了你的錯誤。

如果你只是希望它的工作

CC= /usr/bin/gcc 
CFLAGS = -g -Wall -std=c99 -O2 -arch x86_64 



all: test.c 
    $(CC) $(CFLAGS) test.c 

注意,在所有的標籤必須是一個「真正」的標籤。

我建議你查看一個makefile教程或者只是從命令行編譯它。 的gcc -g -Wall -std = C99 -02 -arch x86_64的limit.c

順便說一句,不知道這一點-arch標誌。在我的Linux機器上無效。

+1

-arch標誌用於Mac OS X.它允許你顯式編譯32位或64位體系結構。 – 2010-11-05 02:29:29

1

嘗試

CC = /usr/bin/gcc 
CFLAGS = -g -Wall -std=c99 -O2 -arch x86_64 
OBJ = limit.o 

%.o: %.c 
    $(CC) -c -o [email protected] $< $(CFLAGS) 
+0

仍然異常退出,退出代碼2,同樣的錯誤...嗯。 – 2010-11-05 01:37:46

+0

有沒有額外的輸出? – EboMike 2010-11-05 01:52:25

0

你沒有定義什麼構建目標是在任何地方。你可以這樣做在命令行上,使用命令

make -k -f limit.makefile limit 

make隱含規則將編譯limit.climit。在你的makefile或者定義一個目標,

CC = /usr/bin/gcc 
CFLAGS = -g -Wall -std=c99 -O2 -arch x86_64 
limit: limit.o 

的第一個目標將默認建成,並知道如何編譯*.c*.o和鏈接對象文件,所以一切都是自動的。

如果你好奇,默認的規則等同(在GNU使)

%.o:%.c 
    $(CC) $(CPPFLAGS) $(CFLAGS) -c -o [email protected] $< 
%:%.o 
    $(CC) $(LDFLAGS) -o [email protected] $^ $(LDLIBS) 

其中[email protected]$<$^擴大到目標,首先前提條件分別所有prereqs,百分號是目標名稱的通配符。

1

EboMike的是更復雜的,但這裏有一個簡單的辦法是保證您的一個文件項目工作:

CC = /usr/bin/gcc 
CFLAGS = -g -Wall -std=c99 -O2 -arch x86_64 

limit: limit.c 
    $(CC) $(CFLAGS) -o limit limit.c 

您可以通過自身運行這個只make

+0

您應該將$(CFLAGS)添加到編譯器調用中,否則它們將不會被使用 – 2010-11-05 02:13:52

+0

哎呀,謝謝:) – 2010-11-05 02:35:17