2009-09-01 96 views
2

我想无需任何操作系统运行的PowerPC嵌入式系统的一个简单的程序。我正在使用GNU编译器 - 链接器工具和PSIM作为模拟器。我写了自己非常简单的链接器指令文件。如何防止动态重定位(rela.dyn)?

我用一个全局变量在我的静态库,并希望使用该变量在我的示例程序。但是,链接示例程序GNU ld会给出错误并停止。它说它在链接器指令文件中找不到rela.dyn。其实我不想使用动态可重定位库,因为我没有动态加载器。我究竟做错了什么?

+1

我用-nostartfiles -nodefaultlibs -nostdlib -static标志,同时连接。 - 不需要共享标志,这是不适合我的应用程序 – 2009-09-03 12:53:27

回答

0

很难说没有更多的信息。如果您没有底层操作系统,您是否使用“ - ”来避免在平台运行时链接?

编辑: -ffreestanding需要-shared? - 用于编译到非托管环境的便捷手段。这样的环境如何支持共享库?

+0

其实它,我已经尝试过,看到结果... – 2009-09-11 13:41:46

+0

有趣。我在这一点上退出( - 不应该那样做,但我没有在你的特定平台上工作,所以我不能真正判断);也许遵循James Molloy的建议(ld -v)会让你更进一步。 – DevSolar 2009-09-11 14:43:21

+0

应该有一个反对投票的规则,不要留下评论,认为答案中哪些内容没有用。 : - / – DevSolar 2009-10-06 10:09:05

0

-ffreestanding,太阳说。如果失败,请使用--verbose选项运行ld以查看它正在尝试链接的内容:这将使您能够进一步调试。