gcc编译程序时能指定使用GLIBC的版本吗?

chenxi_aji 2010-01-13 04:34:16
目前在做linux嵌入式开发。还是新手。
今天把在桌面ubuntu9下编译调试通过的程序放到嵌入式设备上运行,但是报告很多类似 version GLIBC_2.4 not found的错误。
然后我用strings /usr/lib/libc.so | grep GLIBC 的命令查看了一下,发现嵌入式设备上只支持到2.2.4。而桌面ubuntu9却支持到2.10.0. 我想是因为这个缘故。那么我有办法把我的程序用GLIBC2.2.4以下的版本来编译吗?我的程序中还用到了一个第三方开发库libcurl和与之相关的zlib库,采用源码安装。我想应该也要调整。那么请问我应该用什么解决方案?或者比较规范的做法是怎样的?

另外gcc有-static-libgcc的选项。我用下来不是有报错就是没用。我还不清楚libgcc和GLIBC是什么关系。目前暂时想到的全部采用静态链接,把libc也静态链接进来。但这样最终执行文件就很大。可能会超出设备的容量。或者只能另外编译一个libc库出来?

谢谢各位。
...全文
6150 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
spoonypussy 2010-03-15
  • 打赏
  • 举报
回复
我也是用的gcc4.4.1,但是我安装了gcc3.4.6。我把gcc的链接改到3.4.6上面去了,请问glibc的版本用不用换啊?
zhuxueling 2010-01-16
  • 打赏
  • 举报
回复
glibc是gnu版的libc,是C语言的标准库实现。

你要用老版本的gcc才能使用老版本的glibc
chenxi_aji 2010-01-14
  • 打赏
  • 举报
回复
现在自己编译交叉工具链。好不容易搞定了configure和几个依赖组件。
但是上来的binutils就make错误:
../binutils-2.10.1/gas/config/tc-i386.h: 441: error: array type has incomplete element type

为啥呀?我编译的是binutils2.10.1 老版本

用的编译器是ubuntu9自带的gcc 4.4.1

难道是太新了???那我要疯掉了,这不是死循环了吗?我接下来还准备编译老的gcc3.0呢~:(
chenxi_aji 2010-01-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hqin6 的回复:]
而桌面ubuntu9却支持到2.10.0. 我想是因为这个缘故


先把你这个想法证实了再说其他~~~~如果不是这个问题,那后面的一堆问题都不是问题了!
[/Quote]

它的是这个错。我只能见招拆招~~~~
chenxi_aji 2010-01-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wuyu637 的回复:]
可以,你写makefile的时候,可以指定你用的gcc的位置

$CC = XXXXX/include/gccxx.x/
[/Quote]

请问第一个XXXXX是什么?
wuyu637 2010-01-13
  • 打赏
  • 举报
回复
可以,你写makefile的时候,可以指定你用的gcc的位置

$CC = XXXXX/include/gccxx.x/
太乙 2010-01-13
  • 打赏
  • 举报
回复
而桌面ubuntu9却支持到2.10.0. 我想是因为这个缘故


先把你这个想法证实了再说其他~~~~如果不是这个问题,那后面的一堆问题都不是问题了!

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧