我有一个可执行文件,通过链接几个.o文件制作而成,并使用了复杂的链接脚本。如果设置了特定的环境标志,我希望会涉及另一个部分。因此,类似以下这样:
/* withfoo.ld */
SECTIONS {
.foo 0x80000000 : {
_start_foo = .;
. += 0xfff;
_end_foo = .;
}
}
然后使用以下命令进行编译:
if [ $FOO_DEFINED ]; then
gcc -Wl,-T normal.ld $(OBJS) foo.o foo.ld
else
gcc -Wl,-T normal.ld $(OBJS)
fi
我希望不需要修改normal.ld
文件。 normal.ld
文件中有一个SECTIONS定义,这给了我两个SECTIONS…… 我收到了警告:
/usr/bin/ld: warning: foo.ld contains output sections; did you forget -T?
这是实际的问题还是仅仅是一个警告?此外,我是否不知道正确的做法呢?