免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1971 | 回复: 4
打印 上一主题 下一主题

[C] 各位好,请教一个C链接错误 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-01-10 17:42 |只看该作者 |倒序浏览
我在学习用犹它大学的OSKIT,在测试它的Hello程序的时候,出现了如下的链接错误:

ld -Ttext 100000  -L../../lib \
                -o hello ../../lib/multiboot.o hello.o          \
                -loskit_clientos -loskit_kern -loskit_lmm \
                -loskit_c ../../lib/crtn.o
../../lib/liboskit_clientos.a(mem.o):在函数‘mem_realloc’中:
/home/yk/oskit/clientos/mem.c:155:对‘memcpy’未定义的引用
../../lib/liboskit_kern.a(direct_cons_putchar.o):在函数‘scroll’中:
../kern/x86/pc/direct_cons_putchar.c:74:对‘memcpy’未定义的引用

其中memcpy的定义在一个它提供的一个<string.h>中,为

#define memcpy __builtin_memcpy

我想问一下,它是意思是不是直接使用GCC定义的__builtin_memcpy?怎么消除这个链接错误啊?

在此先谢谢各位了!

[ 本帖最后由 by325 于 2008-1-10 19:32 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2008-01-10 20:17 |只看该作者
那不是显然在说没有#include <string.h>吗?

论坛徽章:
0
3 [报告]
发表于 2008-01-11 09:50 |只看该作者
原帖由 飞灰橙 于 2008-1-10 20:17 发表
那不是显然在说没有#include 吗?


     不是这个原因,如果没有#include<string.h>的话,编译的时候就会出错,现在编译的时候没有出错,只是在链接的时候出错了,我觉得应该是没有找到memcpy的实现函数,也就是__builtin_memcpy的实现函数。
    可是,现在我还有点困惑的是,最后链接出来的结果,是作为一个可启动镜像的,应该不依赖于任何库,这是需要用到GCC的__builtin_memcpy是否有点不妥呢?
    上述问题,还请高手明示,谢谢各位了!

论坛徽章:
0
4 [报告]
发表于 2008-01-11 10:22 |只看该作者
原帖由 by325 于 2008-1-11 09:50 发表


     不是这个原因,如果没有#include的话,编译的时候就会出错,现在编译的时候没有出错,只是在链接的时候出错了,我觉得应该是没有找到memcpy的实现函数,也就是__builtin_memcpy的实现函数。
    可是 ...



memcpy這種函數,一般都是靜態連結的, 出來還是獨立的镜像啊。

论坛徽章:
0
5 [报告]
发表于 2008-01-11 11:09 |只看该作者
原帖由 agaric 于 2008-1-11 10:22 发表



memcpy這種函數,一般都是靜態連結的, 出來還是獨立的镜像啊。


多谢agaric了,那上面的链接错误怎么消除啊?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP