2010-10-15 97 views
2

是否可以通過使用鏈接器命令文件有條件地鏈接(如if..else)?使用鏈接器命令文件輸入到鏈接器的程序中的段的條件鏈接?

假設我有兩個兩個條件,我需要鏈接兩個不同的部分通過鏈接器命令文件中鏈接時檢查該條件?

我正在使用飛思卡爾的定製鏈接器(星核 - gcc的味道)。

__Kanu

+1

這是你可以用你的構建系統(例如你的makefile)更容易解決的問題嗎? – 2010-10-15 10:01:33

+0

沒有使用Code warrior ide,沒有製作引擎機制! – 2010-10-15 10:06:16

+0

只是你的構建系統看起來*如此*定製,使一個更多的定製並不是什麼大問題... – 2010-10-15 10:14:42

回答

1

我不知道您的自定義鏈接究竟如何不同,或者是類似的GNU ld的連接器,但你提到你的工具鏈是類似的或基於GCC。 GNU ld允許您使用--script=scriptfile或類似選項在命令行上指定鏈接器腳本。 ld腳本可以INCLUDE其他腳本文件(或腳本片段)。所以,你可以把你常用的東西變成common.link.config(例如),並有如下所示兩個獨立的連接器的配置腳本:

/* option1.link.config */ 

INCLUDE common.link.config 

/* stuff specific to option1 follows */ 

... 

不出所料,選項2的代碼可能看起來像:

/* option2.link.config */ 

INCLUDE common.link.config 

/* stuff specific to option2 follows */ 

... 

然後,不是通過鏈接器命令行傳遞「條件」,而是將option1.link.configoption2.link.config指定爲鏈接器配置腳本。

如果您當前沒有使用腳本,因爲工具鏈中的鏈接器內置了相應的默認腳本,則可以使用ld -verbose轉儲該默認腳本並修改它以作爲自定義腳本的起點。