2010-10-15 96 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转储该默认脚本并修改它以作为自定义脚本的起点。