一江春水向東流

          做一個有思想的人,期待與每一位熱愛思考的人交流,您的關注是對我最大的支持。

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            44 隨筆 :: 139 文章 :: 81 評論 :: 0 Trackbacks

          Makefile 學習筆記
          ??? 五一期間在學校呆著是在無聊,關于那些數據挖掘和算法的理論看的也實在是費勁,突然想練習實踐一下,因為不會makefile編寫的緣故,以前寫程序時只能放到一個文件里,好了,現在開始了。
          ??? 又因為我畢業設計做的的是一個嵌入式網關,系統用的是uClinux,里面要用的一個WEB服務器,當然要支持CGI了,初步打算用boa,看看boa源碼,不少啊,在看makefile還挺復雜,要用configure的,我在linux下.configure 然后後make了一下,錯誤一大串,還都是鏈接是出錯了,象我這樣的makefile菜鳥一時搞定,可能行不答了,又看了看user目錄下的應用程序,還有一個httpd,這個我熟悉,以前看過,只有兩個文件,好的,那這個練習了,里面現成的Makefile當然是不好使了。
          寫一個如下的makefile
          #makefile
          CC = gcc
          EXEC = httpd
          OBJS = httpd.o copy.o
          HTTPD_DOCUMENT_ROOT = /home/httpd
          CFLAGS += -DHTTPD_DOCUMENT_ROOT = \"$(HTTPD_DOCUMENT_ROOT)\"
          all:$(EXEC)
          $(EXEC):$(OBJS)
          ??????? $(CC) $(LDFLAGS) -o $@ $(OBJS) $(LDLIBS)
          .c.o:
          ??????? $(CC) $(CFLAGS) -c $<

          clean:
          ??????? -rm -f $(EXEC) *.elf *.gdb *.o
          多少有參考原Makefile,make時會有錯誤,多make幾次就成功了,運行./httpd
          ?? 這里的HTTP_DOCUMENT_ROOT這個參數不知怎么回事,我猜測是傳到文件里的參數,但是我在你打印時就會有段錯誤,程序運行後,在瀏覽器里輸入IP,在瀏覽器里列出了文件系統的目錄,可以看是根目錄,不對啊,按照上面傳入的參數因該是/home/httpd才對的,看看httpd.c的源碼
          ? signal(SIGCHLD, SIG_IGN);
          ? signal(SIGPIPE, SIG_IGN);
          ? signal(SIGALRM, sigalrm);

          ? chroot(HTTPD_DOCUMENT_ROOT);
          ? //chdir("/");
          ? //chdir(HTTPD_DOCUMENT_ROOT);
          ? chdir("/home/httpd");

          ? if (argc > 1 && !strcmp(argv[1], "-i")) {
          原來這里將目錄改變到根目錄,怎么這么做呢,看來這代碼真的很有問題,難怪我編譯uClinux是老是出現很低級的錯誤。改成chdir(HTTPD_DOCUMENT_ROOT);在打開瀏覽器測試,服務器根目錄在程序運行的目錄,不是/home/httpd,打印就是段錯誤,多半是vdocument_root沒有傳進來,估計是makefile寫的還有些問題。如是直接改成chdir("/home/httpd"),這下到了我存放網頁的目錄了。寫了一個index.htm測試網頁放到目錄下,網頁打開了。
          今天makefile 實踐就到此了,下回就把boa給編譯了。

          參考文章:MAKEFILE的編寫(轉載)

          posted on 2007-05-03 10:47 allic 閱讀(1485) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 汨罗市| 五指山市| 历史| 普兰店市| 章丘市| 高密市| 正定县| 邹平县| 耿马| 苗栗县| 高邑县| 乌兰浩特市| 鄂伦春自治旗| 德令哈市| 安岳县| 嘉禾县| 鄂托克前旗| 绥阳县| 博白县| 大安市| 富宁县| 宁安市| 延川县| 秦皇岛市| 渭南市| 通州区| 彭山县| 正安县| 时尚| 德安县| 襄城县| 东阳市| 萨嘎县| 开阳县| 儋州市| 电白县| 苏州市| 垣曲县| 黎平县| 自贡市| 甘南县|