在没有操作系统的情况下构建和链接μIP库

时间:2014-04-14 07:55:41

标签: embedded tcp-ip atmel micro-ip

我对嵌入式开发非常陌生,我对在嵌入式设备上构建和链接μIP库有疑问或更多反馈。对于它的价值,以下是使用带有 no OS的ATMEL AT91SAM9G20处理器的FOX G20 V板。 我做了一些研究,我看到自己在电路板上构建和链接库的方式是以下两个选项之一。

选项1:第一个选项是编译整个库(.c文件),以便以.a文件的形式建立一个静态库。然后,我可以将创建的静态库与我的应用程序代码链接,然后再将其加载到设备上。当然,必须对设备驱动程序进行编程才能使库在平台上工作(找到帮助here)。第一个选项是使用Linux机器。对于第一个选项,为了加载与我的应用程序代码链接的静态库,我是否使用“scp”?

选项2:第二个选项是直接编译和链接库到我的应用程序代码,而无需通过中间静态库。但是,由于我的平台不包含操作系统,我需要安装一个适当的GCC编译器来编译和链接(如果有人有这样的安装的任何线索,那将是非常有用的)。然而,我对第二个选项非常不熟悉,但我被告知它更容易实现,所以如果有人作为如何实现它的想法,它将是非常有帮助的。

我希望得到一些反馈,以及关于这些选项对您来说是否正确的答案,并确保我没有提到错误的内容。

1 个答案:

答案 0 :(得分:4)

这些选项之间没有真正的区别。在任何情况下,主机工具链负责创建一个包含完全链接的可执行文件而没有外部依赖关系的二进制文件,因此您需要一种交叉编译器,并且最简单的方法是将uIP与应用程序的其余部分一起编译

工具链通常会有一个交叉编译器(如果你使用gcc,它应该被命名为arm-eabi-gccarm-none-eabi-gcc),交叉链接器(arm-eabi-ld),交叉存档器({{1您将使用这些而不是本机工具。对于Debian,您可以在testing / unstable中找到cross compiler for ARM targets without an OS

是否构建静态库

arm-eabi-ar

或直接链接

arm-eabi-gcc -c uip.c
arm-eabi-ar cru uip.a uip.o
arm-eabi-ranlib uip.a
arm-eabi-gcc -o executable application.c uip.a

或直接编译和链接

arm-eabi-gcc -c application.c
arm-eabi-gcc -c uip.c
arm-eabi-gcc -o executable application.o uip.o

没有什么不同。

如果您使用集成开发环境,通常最简单的方法是将arm-eabi-gcc -o executable application.c uip.c 添加为源文件。