LinuxSir.cn,穿越时空的Linuxsir!

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

请教各位大侠:将程序分开编译和连接出错!

[复制链接]
发表于 2004-9-5 16:30:56 | 显示全部楼层 |阅读模式
我想将程序分开编译和连接,使用的程序就是最简单的helloworld程序,其中makefile是这样写的:
all:
        gcc -c -o hello.o hello.c
        ld -o hello
执行make后出错
gcc  -c -o hello.o hello.c
ld  -o hello hello.o
ld: warning: cannot find entry symbol _start; defaulting to 08048074
hello.o(.text+0x19): In function `main':
: undefined reference to `printf'
make: *** [all] Error 1
   请教各位大侠,是不是在用ld连接的时候还需要传递什么参数啊?
发表于 2004-9-5 20:19:13 | 显示全部楼层
all:
gcc -o hello hello.c
(注意gcc前面要用tab分隔)这样就已经完成编译和连接了。不要自己连接以避免不会使用正确的选项。
 楼主| 发表于 2004-9-5 20:58:12 | 显示全部楼层
lanche兄,这个问题解决了,需要在ld时加上-lc选项。

但当我再次修改makeifile时又发生错误,将makefile改为:
all:
   gcc -c -o hello.o hello.c
    ld -Ttext=0x30008000 -o hello -lc hello.o
错误为:
gcc  -c -o main.o main.c
ld  -Ttext=0x30800000  -lc  -o hello main.o
ld: warning: cannot find entry symbol _start; defaulting to 30800000
ld: hello: Not enough room for program headers (allocated 5, need 6)
ld: final link failed: Bad value


各位大侠看看这是怎么回事啊?
发表于 2004-9-7 09:37:33 | 显示全部楼层
不要直接用ld。用gcc链接看看:
gcc -c hello.c -o hello.o
gcc -o hello hello.o
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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