回文章列表
作者asho.bbs@bbs.sayya.org (阿信) 看板: linux
標題Re: [問題] 多個 .o, .a 檔編譯在一個執行檔中
時間SayYA 資訊站 (2008/04/26 Sat 20:43:25)
※ 引述《littleboypis.bbs@ptt.cc (littleboypis)》之銘言:
> 請教一下
> 如果我有一程式的目錄結構如下
> main.c
> Makefile
> network/
>      --/function.c
>      --/function.h
>      --/Makefile
> fileio/
>      --/iofunction.c
>      --/iofunction.h
>      --/usbfunction.c
>      --/usbfunction.h
>      --/Makefile
> main.c有呼叫一些function所以
> main.c include function.h and iofunction.h usbfunction.h
> 我在編譯時都是這麼編譯的(在 Makefile中)
> 在最top_dir下
> make all
> 接著會各自在子目錄中 make all,在各目錄會產生.o檔,而在fileio會產生一個.a
> 語法如下:
> gcc -v -g -c -o function.o function.c
> gcc -v -g -c -o iofunction.o
> gcc -v -g -c -o usbfunction.o
> ar rc fileio.a iofunction.o usbfunction.o
> 最後,main.c在跟這些檔案編在一起
> gcc -v -g -o main network/function.o fileio/fileio.a
  改下
    gcc -v -g -Ifileio -Inetwork -o main network/function.o fileio/fileio.a

    另外建議的是如果fileio和network目錄下的.h是要給外部程式include的話,
    可以另外放在topsrc_dir的include下。
--
※ Origin: SayYA 資訊站 <bbs.sayya.org> 
◆ From: 220-133-54-140.hinet-ip.hinet.net
文章選讀←離開[主題上]主題下(k)上篇(j)下篇S/a搜尋 G串列 TAB精華 ↑↓捲 Pg/Space翻