编译一个简单的程序,链到libc出现有关问题

编译一个简单的程序,链到libc出现问题
写了一个小小的测试程序,init.s完成硬件的初始化,main.c打印一条语句,使用的是printf。用arm-linux-ld进行链接的时候,用 "-lc "来指定链接到libc.a,但是arm-linux-ld报错:找不到libc.so.6。我又在-lc前加上一条“-static”(我也忘了静态编译是不是用这条选项,arm-linux-ld   --help也没有提示),这次报一大堆的错误,类似与:/tmp/cross/src/glibc-2.2.3/stdlib/XXX.c:100:undefined   reference   to   XXX。

有如下几个疑问:

1)我上面的静态编译选线对不对(已经用-L指定了在/arm-linux/arm-linux/lib中寻找libc)
2)即使编译成功,实际的代码是不是也运行不了(我预想在s3c2410板上运行):因为实际的输出应该要设置串口或者屏幕什么的,一般与系统的实现有关。这样没有系统支持,自己有没有提供接口,是不是还是不行?
3)arm-linux-ld是怎么去找libc.so.6的?默认是动态编译吗?它怎么知道版本的,是不是有系统的参数?

谢谢各位了

------解决方案--------------------
1. 没错,-L -static -l
2. 能不能运行要看程序内部功能架构,如果只是简单得printf hello world,肯定可以。
3. -l 缺省是加载.so,而后才是.a 。默认情况下,GCC在链接时优先使用动态链接库(.so),只有当动态链接库不存在时才考虑使用静态链接库(.a),如果需要的话可以在编译时加上-static选项,强制使用静态链接库。
而so的版本通过链接实现,libc.so实际上链接到libc.so.x.xx

对于你的问题,我觉得首先要确认libc.a存在,并正确链接,同时要保证交叉编译链的正确。