平台是ubuntu gcc版本是4.4版本
20 个解决方案
#1
貌似某些库没有链接上?
#2
敢问lz你是如何编译的? 在终端上rpm -q gcc glibc 看一看版本。 另外 也可能是你编译的顺序有问题。比如说有文件相互调用,但是低版本的gcc是不能自动识别的。 建议lz升级一下gcc
#3
还是不行啊gcc是最新的库也没问题,不会是最新版gcc不够稳定吧?
#4
没见过,等高手
#5
解决了,是忘记了将一个public加入.h文件,同时可能也有编译排序问题
多谢了!
多谢了!
#6
是在看于渊的书吧!最近我也遇到了同样的问题.....一直未解决
是如何解决的?
谢谢!!!
#7
这两天也遇到这个问题:可以在makefile的CFLAGS中添加-fno-stack-protector一项。
#8
估计是版本低吧,我也出现了LZ的情况,但加上-fno-stack-protector就OK了。
#9
解决了,是忘记了将一个public加入.h文件???????能不能说明白点啊,谢谢啦………………
#10
LZ 还不结帖么,都一年了。从你解决问题的方式来看应该是这样一个情况:
其实你早就解决了问题,因为你在CFLAGS后面加上了-fno-stack-protector。但“可是加上之后依然显示undefined reference to `__stack_chk_fail'”出现的原因是你再次使用Makefile进行编译的时候,由于待编译文件没有改变,而且你未将先前编译的结果清除,所以貌似没有效果。后来你发现少了一个.h文件,将其改动,那么依赖就得到更新,Makefile就产生了效果,你自认为解决了问题,其实原因找错了。
其实你早就解决了问题,因为你在CFLAGS后面加上了-fno-stack-protector。但“可是加上之后依然显示undefined reference to `__stack_chk_fail'”出现的原因是你再次使用Makefile进行编译的时候,由于待编译文件没有改变,而且你未将先前编译的结果清除,所以貌似没有效果。后来你发现少了一个.h文件,将其改动,那么依赖就得到更新,Makefile就产生了效果,你自认为解决了问题,其实原因找错了。
#11
哥们,你太厉害了,看你的贴我把问题解决了。确实厉害啊
#12
兄弟 你太生猛了 看你的回复我把问题解决了!!!
#13
-fno-stack-protector正解
#14
10楼,神
#15
为什么我生成的Makefile里边没有CFLAGS呢
#16
各位高手,
我的makefile 文件里面有这行
YOGA_GLOBAL_CFLAGS = -pipe -fno-exceptions -ffunction-sections $(WARN_FLAGS)
我不明白 【 在CFLAGS后面加上了-fno-stack-protector】 是什么意思
我发现我系统里面的 stdio.h文件 内容很少,没有fread(),fopen,FILE, 我加上fread(),fopen,FILE后,编译就出现
gcc-4.1.2/newlib/libc/sys/aeonsim/glue.c:144: undefined reference to `___stack_base'
gcc-4.1.2/newlib/libc/sys/aeonsim/glue.c:144: undefined reference to `___stack_size'
我的makefile 文件里面有这行
YOGA_GLOBAL_CFLAGS = -pipe -fno-exceptions -ffunction-sections $(WARN_FLAGS)
我不明白 【 在CFLAGS后面加上了-fno-stack-protector】 是什么意思
我发现我系统里面的 stdio.h文件 内容很少,没有fread(),fopen,FILE, 我加上fread(),fopen,FILE后,编译就出现
gcc-4.1.2/newlib/libc/sys/aeonsim/glue.c:144: undefined reference to `___stack_base'
gcc-4.1.2/newlib/libc/sys/aeonsim/glue.c:144: undefined reference to `___stack_size'
#17
我也是看于渊的书碰到这个问题,在CFLAGS后面加上了-fno-stack-protector之后,执行make image(之前并没有清除以前的编译结果,也没有以任何方式改变文件之间的依赖关系),问题就解决了
#18
你们把我的问题解决了,我也在看于渊的书,在第5章,编译h的时候出现这个错误,错误处在disp_int这个函数,在lib\klib.c中,在CFLAGS后面加上了-fno-stack-protector之后就好了,不用清楚以前的编译结果,因为make image = make final building , final= all clean = realclean everything.所以已经自动清除了.
#19
是学到了于渊那本书的第9章,磁盘驱动那一部分吧,,print_identify_info函数里的char s[64]可能被gcc判别为做溢出攻击的恶意代码,把它挪到全局变量也可以解决(虽然不太雅观)。
我启用了-fno-stack-protector,ld又弹出来一句ld:-f may not be use without -shared,我加上了-shared,倒是链接成功,但链接出来的内核完全不能运行了。
我启用了-fno-stack-protector,ld又弹出来一句ld:-f may not be use without -shared,我加上了-shared,倒是链接成功,但链接出来的内核完全不能运行了。
#20
膜拜,好牛逼,原来要make clean一下才行
#21
#1
貌似某些库没有链接上?
#2
敢问lz你是如何编译的? 在终端上rpm -q gcc glibc 看一看版本。 另外 也可能是你编译的顺序有问题。比如说有文件相互调用,但是低版本的gcc是不能自动识别的。 建议lz升级一下gcc
#3
还是不行啊gcc是最新的库也没问题,不会是最新版gcc不够稳定吧?
#4
没见过,等高手
#5
解决了,是忘记了将一个public加入.h文件,同时可能也有编译排序问题
多谢了!
多谢了!
#6
是在看于渊的书吧!最近我也遇到了同样的问题.....一直未解决
是如何解决的?
谢谢!!!
#7
这两天也遇到这个问题:可以在makefile的CFLAGS中添加-fno-stack-protector一项。
#8
估计是版本低吧,我也出现了LZ的情况,但加上-fno-stack-protector就OK了。
#9
解决了,是忘记了将一个public加入.h文件???????能不能说明白点啊,谢谢啦………………
#10
LZ 还不结帖么,都一年了。从你解决问题的方式来看应该是这样一个情况:
其实你早就解决了问题,因为你在CFLAGS后面加上了-fno-stack-protector。但“可是加上之后依然显示undefined reference to `__stack_chk_fail'”出现的原因是你再次使用Makefile进行编译的时候,由于待编译文件没有改变,而且你未将先前编译的结果清除,所以貌似没有效果。后来你发现少了一个.h文件,将其改动,那么依赖就得到更新,Makefile就产生了效果,你自认为解决了问题,其实原因找错了。
其实你早就解决了问题,因为你在CFLAGS后面加上了-fno-stack-protector。但“可是加上之后依然显示undefined reference to `__stack_chk_fail'”出现的原因是你再次使用Makefile进行编译的时候,由于待编译文件没有改变,而且你未将先前编译的结果清除,所以貌似没有效果。后来你发现少了一个.h文件,将其改动,那么依赖就得到更新,Makefile就产生了效果,你自认为解决了问题,其实原因找错了。
#11
哥们,你太厉害了,看你的贴我把问题解决了。确实厉害啊
#12
兄弟 你太生猛了 看你的回复我把问题解决了!!!
#13
-fno-stack-protector正解
#14
10楼,神
#15
为什么我生成的Makefile里边没有CFLAGS呢
#16
各位高手,
我的makefile 文件里面有这行
YOGA_GLOBAL_CFLAGS = -pipe -fno-exceptions -ffunction-sections $(WARN_FLAGS)
我不明白 【 在CFLAGS后面加上了-fno-stack-protector】 是什么意思
我发现我系统里面的 stdio.h文件 内容很少,没有fread(),fopen,FILE, 我加上fread(),fopen,FILE后,编译就出现
gcc-4.1.2/newlib/libc/sys/aeonsim/glue.c:144: undefined reference to `___stack_base'
gcc-4.1.2/newlib/libc/sys/aeonsim/glue.c:144: undefined reference to `___stack_size'
我的makefile 文件里面有这行
YOGA_GLOBAL_CFLAGS = -pipe -fno-exceptions -ffunction-sections $(WARN_FLAGS)
我不明白 【 在CFLAGS后面加上了-fno-stack-protector】 是什么意思
我发现我系统里面的 stdio.h文件 内容很少,没有fread(),fopen,FILE, 我加上fread(),fopen,FILE后,编译就出现
gcc-4.1.2/newlib/libc/sys/aeonsim/glue.c:144: undefined reference to `___stack_base'
gcc-4.1.2/newlib/libc/sys/aeonsim/glue.c:144: undefined reference to `___stack_size'
#17
我也是看于渊的书碰到这个问题,在CFLAGS后面加上了-fno-stack-protector之后,执行make image(之前并没有清除以前的编译结果,也没有以任何方式改变文件之间的依赖关系),问题就解决了
#18
你们把我的问题解决了,我也在看于渊的书,在第5章,编译h的时候出现这个错误,错误处在disp_int这个函数,在lib\klib.c中,在CFLAGS后面加上了-fno-stack-protector之后就好了,不用清楚以前的编译结果,因为make image = make final building , final= all clean = realclean everything.所以已经自动清除了.
#19
是学到了于渊那本书的第9章,磁盘驱动那一部分吧,,print_identify_info函数里的char s[64]可能被gcc判别为做溢出攻击的恶意代码,把它挪到全局变量也可以解决(虽然不太雅观)。
我启用了-fno-stack-protector,ld又弹出来一句ld:-f may not be use without -shared,我加上了-shared,倒是链接成功,但链接出来的内核完全不能运行了。
我启用了-fno-stack-protector,ld又弹出来一句ld:-f may not be use without -shared,我加上了-shared,倒是链接成功,但链接出来的内核完全不能运行了。
#20
膜拜,好牛逼,原来要make clean一下才行