ld 脚本没有使用 INPUT 命令链接我的库中的对象

ld script does not link objects from my lib with INPUT command

提问人:fjm 提问时间:5/19/2023 最后编辑:fjm 更新时间:6/2/2023 访问量:19

问:

我有用于构建 x86 引导加载程序的小型链接器脚本。ld

OUTPUT_FORMAT(binary)
SECTIONS
{
        . = 0x7c00;

        .code :
    {
                * (.text)
        * (.rodata)
    }

    . = 0x7c00 + 510;

    .signature :
        {
            BYTE(0x55)
        BYTE(0xAA)
    }

}
STARTUP(crt0.o)
INPUT(-lfoo)        /* This is not working. */

/* INPUT(foo.o)*/   /* This works, instead. */

我的程序引用了 中的符号,它是 的成员。 我尝试使用,这样我就不需要在命令行上传递。 但是,无法解析该符号,我收到此错误消息:barfoo.olibfoo.aINPUT(-lfoo)-lfooldld

undefined reference to 酒吧'

它的唯一工作方式是,如果我注释该行并取消注释下一行,这将显式传递对象而不是静态库。INPUT(-lfoo)INPUT(foo.o)

我隐约怀疑这与链接器处理参数的顺序有关,但我不确定。-l

有什么问题,在此示例中使用表单的解决方法(如果有)是什么?INPUT(-lfoo)

我尝试更改无济于事。 要么我必须在命令行传递,要么我需要将各个对象传递给 。INPUT()GROUP()-lfooldINPUT()

器错误 ld 链接器脚本

评论


答: 暂无答案