技術討論區 > 程式討論版

有多層子目錄架構的source code, 該如何compile, link成一個執行

(1/1)

阿貴:
大家好,一個小小問題請問大家,請多多幫忙…謝謝…
有多層子目錄架構的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 的方法有何不同?    謝謝你耐心看完這個問題…

劍客:
autoscan
autoconf
automake

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

導覽

[0] 文章列表

前往完整版本