LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1693|回复: 2

GCC如何指定启动代码

[复制链接]
发表于 2009-4-5 23:33:08 | 显示全部楼层 |阅读模式
各位好:
如题,如何指定程序的启动代码呢?我是想自己写启动代码,不用编译器的,并且想使用链接脚本(.lds),请指教

起因是这两天想利用u-boot的start.s和它的链接脚本来做自己代码的启动,但是发现start.s里有用#define 定义一些常量,可这不是GNU汇编的语法啊,导致编译不过,后来我手动改成.equ形式才编译过,请问为什么U-BOOT中能编译通过呢?

在链接阶段,当我使用ld来链接时,居然会报错说有函数找不到,从函数名来判断应该是库文件中的,如何解决这个问题呢?

还有一个就是会报错说_start等多重定义,我试图在链接选项里加入-nostartfiles -nostdlib也没有用,请问如何解决呢?
发表于 2009-4-30 22:08:13 | 显示全部楼层
参照uboot不就知道了吗,其已经说的很明白了
回复 支持 反对

使用道具 举报

发表于 2009-6-4 10:36:04 | 显示全部楼层
Post by yanzhongsan;1970304
各位好:
如题,如何指定程序的启动代码呢?我是想自己写启动代码,不用编译器的,并且想使用链接脚本(.lds),请指教

起因是这两天想利用u-boot的start.s和它的链接脚本来做自己代码的启动,但是发现start.s里有用#define 定义一些常量,可这不是GNU汇编的语法啊,导致编译不过,后来我手动改成.equ形式才编译过,请问为什么U-BOOT中能编译通过呢?
当使用gcc -c -o ...去编译的时候,会先用cpp0预处理源程序;而如果直接as -o ...去汇编的话,as编译器就只认.equ而不认#define了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表