关于gcc、glibc和binutils模块之间的关系,连同在现有系统上升级glibc

本文详细介绍了GCC、GLIBC与BINUTILS这三个关键模块的关系及其各自的功能。GCC负责预处理与编译工作;BINUTILS提供一系列用于管理二进制文件的工具;GLIBC则是C运行库,封装了系统服务并提供了必要的功能实现。

 关于gcc、glibc和binutils模块之间的关系,连同在现有系统上升级glibc
gcc、glibc和binutils模块之间的关系
1) gcc(gnu collect compiler)是一组编译工具的总称。他主要完成的工作任务是“预处理”和“编译”,连同提供了和编译器紧密相关的
运行库的支持,如libgcc_s.so、libstdc++.so等。
2) binutils提供了一系列用来创建、管理和维护二进制目标文档的工具程式,如汇编(as)、连接(ld)、静态库归档(ar)、反汇编
(objdump)、elf结构分析工具(readelf)、无效调试信息和符号的工具(strip)等。通常,binutils和gcc是紧密相集成的,没有binutils
的话,gcc是不能正常工作的。
3) glibc是gnu发布的libc库,也即c运行库。glibc是linux系统中最底层的api,几乎其他任何的运行库都会倚赖于glibc。glibc除了封装
linux操作系统所提供的系统服务外,他本身也提供了许多其他一些必要功能服务的实现,主要的如下:
(1)string,字符串处理
(2)signal,信号处理
(3)dlfcn,管理共享库的动态加载
(4)direct,文档目录操作
(5)elf,共享库的动态加载器,也即interpreter
(6)iconv,不同字符集的编码转换
(7)inet,socket接口的实现
(8)intl,国际化,也即gettext的实现
(9)io
(10)linuxthreads
(11)locale,本地化
(12)login,虚拟终端设备的管理,及系统的安全访问
(13)malloc,动态内存的分配和管理
(14)nis
(15)stdlib,其他基本功能
4.在现有系统上升级glibc库
glibc库,是系统中最核心的共享库和工具,所以最好不要覆盖系统默认的,假如盲目覆盖,很可能导致整个系统瘫痪,因为一般更新glibc库时
,其他任何依赖libc库的共享库都需要重新被编译一遍. 一般做好安装到: /usr/local/lib.
首先编译glibc库。注意最好令建立一个glibc-build的目录,configure时加上--enable-add-ons=linuxthreads选项。make install安装
到/usr/local下。
程式在运行的时候动态库的装载依赖于ld-linux.so.6, 所以要修改修改gcc的spec文档(/usr/lib/gcc/i486-linux-gnu/3.4.6/specs),更改
ld-linux.so.2为/usr/local/lib下的新的共享库装载器,默认情况ld-linux.so.2 在/lib/ld-linux.so.2。
编译binutils库,此时被编译出的程式会连接到/usr/local/lib下的新的libc库。注意,在configure前,需要配置ld缺省连接的路径
(LD_LIBRARY_PATH=/usr/local/lib:/lib:/usr/lib),否则binutils会configure出错,很难找到libc中的一些符号。具体步骤如下:
export LIBRARY_PATH=/usr/local/lib:/lib:/usr/lib
mkdir binutils-build && cd binutils-build
../binutils-2.13.90.0.18/configure
make
make -C ld clean
make -C ld LIB_PATH=/usr/lib:/lib:/usr/local/lib(配置编译后的ld的缺省库搜索路径,后面的比前面的优先级高)
make install
Linux动态库的默认搜索路径是/lib和/usr/lib。动态库被创建后,一般都复制到这两个目录中。当程式执行时需要某动态库,并且该动态库还
未加载到内存中,则系统会自动到这两个默认搜索路径中去查找相应的动态库文档,然后加载该文档到内存中,这样程式就能够使用该动态库
中的函数,连同该动态库的其他资源了。在Linux 中,动态库的搜索路径除了默认的搜索路径外,还能够通过以下三种方法来指定
1.程式在编译时搜索库的路径顺序
ld-linux.so.6由gcc的spec文档中所设定
gcc --print-search-dirs所打印出的路径,主要是libgcc_s.so等库。能够通过GCC_EXEC_PREFIX来设定
LD_LIBRARY_PATH环境变量中所设定的路径,或编译的命令行中指定的-L/usr/local/lib
2.程式在运行的时候动态库的装载依赖于ld-linux.so.6的实现,搜索动态库路径的顺序:
编译目标代码时指定的动态库搜索路径
环境变量LD_LIBRARY_PATH指定的动态库搜索路径
配置文档/etc/ld.so.conf(或/usr/local/etc/ld.so.conf)中指定的动态库搜索路径
默认的动态库搜索路径/lib
默认的动态库搜索路径/usr/lib
注意:编辑完配置文档/etc/ld.so.conf后,要运行ldconfig,这样才能把内容添加到/etc/ld.so.cache中
3、二进制程式的搜索路径顺序为PATH环境变量中所设定。
假如 PATH=/usr/bin:/usr/local/bin:/bin
那么是从考前的路径往靠后的路径开始搜索
参考文档:
http://www.yuanma.org/data/2007/1212/article_2923.htm

 

转自

http://blog.chinaunix.net/u1/49742/showart_465161.html

 

潮汐研究作为海洋科学的关键分支,融合了物理海洋学、地理信息系统及水利工程等多领域知识。TMD2.05.zip是一套基于MATLAB环境开发的潮汐专用分析工具集,为科研人员与工程实践者提供系统化的潮汐建模与计算支持。该工具箱通过模块化设计实现了两大核心功能: 在交互界面设计方面,工具箱构建了图形化操作环境,有效降低了非专业用户的操作门槛。通过预设参数输入模块(涵盖地理坐标、时间序列、测站数据等),用户可自主配置模型运行条件。界面集成数据加载、参数调整、可视化呈现及流程控制等标准化组件,将复杂的数值运算过程转化为可交互的操作流程。 在潮汐预测模块中,工具箱整合了谐波分解法与潮流要素解析法等数学模型。这些算法能够解构潮汐观测数据,识别关键影响要素(包括K1、O1、M2等核心分潮),并生成不同时间尺度的潮汐预报。基于这些模型,研究者可精准推算特定海域的潮位变化周期与振幅特征,为海洋工程建设、港湾规划设计及海洋生态研究提供定量依据。 该工具集在实践中的应用方向包括: - **潮汐动力解析**:通过多站点观测数据比对,揭示区域主导潮汐成分的时空分布规律 - **数值模型构建**:基于历史观测序列建立潮汐动力学模型,实现潮汐现象的数字化重构与预测 - **工程影响量化**:在海岸开发项目中评估人工构筑物对自然潮汐节律的扰动效应 - **极端事件模拟**:建立风暴潮与天文潮耦合模型,提升海洋灾害预警的时空精度 工具箱以"TMD"为主程序包,内含完整的函数库与示例脚本。用户部署后可通过MATLAB平台调用相关模块,参照技术文档完成全流程操作。这套工具集将专业计算能力与人性化操作界面有机结合,形成了从数据输入到成果输出的完整研究链条,显著提升了潮汐研究的工程适用性与科研效率。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值