作者 主題: 有多層子目錄架構的source code, 該如何compile, link成一個執行  (閱讀 5402 次)

0 會員 與 1 訪客 正在閱讀本文。

阿貴

  • 可愛的小學生
  • *
  • 文章數: 4
    • 檢視個人資料
大家好,一個小小問題請問大家,請多多幫忙…謝謝…
有多層子目錄架構的source code, 該如何compile, link成一個執行檔呢?

示意圖如下:
               root directory        
           /       ∣        \
      A_subdir:  B_subdir:   API_subdir:
       A1.c        B1.c        api.c
       A1.h        B1.h        api.h
       A2.c        B2.c
       A2.h        B2.h
     
      root目錄下有A_subdir, B_subdir, share_subdir等三個子目錄,其下分別有 數個檔案,如上圖所示,其中A_subdir, B_subdir底下的.c檔皆須include
另一個子目錄share_subdir下的lib.h檔,請問以上這種常見的情形該如何
撰寫Makefile,使成產生一個執行檔呢?
ps:我試了libtool,試圖把A_subdir下的所有檔案compile, link成一個libA.la
                        B_subdir下的所有檔案compile, link成一個libB.la
                        share_subdir下的…                                   libShare.la
可是發現在各別的子目錄底下,都可順利造出libA.la, libB.la libShare.la,
但最後要造出執行檔時,卻出現了底下類似的error message:
A_subdir/.libs/libA.al(A1.lo): In function `A1_function1':
root/A_subdir/A1.c:248: undefined reference to `api_function1'

請問:在這裡,使用libtool是標準作法嗎?libtool的方法與 ar + ranlib 的方法有何不同?    謝謝你耐心看完這個問題…

劍客

  • 活潑的大學生
  • ***
  • 文章數: 238
    • 檢視個人資料
    • http://kalug.ks.edu.tw
autoscan
autoconf
automake

當然沒有那麼 auto ,有些還是要自己寫。其次是,如果程式不大,可以自己寫。看看別人的 Makefile ,注意 subdir 這個關鍵字。