2o11g一1o 1中lc是i959 11g分区什么意思思及做法

11G101-1图集约束边缘构件构造上的字母数字都是怎么理解都是什么意思 本人新人门外汉看不懂 请赐教 2bf&& bf&且≥300都是什么意思 lc这是代表什么长度吗?
bf是剪力墙的约束边缘构件垂直方向的墙厚,bw是剪力墙的约束边缘构件水平方向的墙厚,lc是剪力墙的约束边缘构件延墙肢方向的长度,ln是梁净跨长,lae是抗震的锚固长度,la是非抗震的锚固长度,Hn是柱净高,lle是抗震的搭接长度,ll是非抗震的搭接长度,hc是支座宽,hw是剪力墙墙肢长度……其他的要再看看~呵呵(依据为11G101-1)如果还有什么不懂可以再问
非常谢谢你 那我不客气了再问一个 别嫌烦~
△h/(hc-50)≤1/6 什么意思 50是指的什么 1/6又是指什么的1/6
请谅解我的无知又问了这么多 (^o^)
没关系,学业有先后,我现在车站
没关系,学业有先后,现在车上,一会到了办公室给你说,才看到你的回复呢。 ^_^
Δh是这2跨梁的高差,hc是指柱子的宽度,如果Δh╱(hc-50)≤1╱6的话,梁的终向钢筋可以连续通过,如果Δh╱(hc-50)>1╱6,那这跨梁的纵向钢筋就必须断开,分别锚固了。
其中,50可以理解为常数,也可以理解为保护层。
为您推荐:
其他类似问题
扫描下载二维码钢筋图纸:JZL1(2)350X750 Y(井字梁) B2?20;T2?14 N2?16;L?8-400 Y2?16;L?18-300是什么意思_百度知道
钢筋图纸:JZL1(2)350X750 Y(井字梁) B2?20;T2?14 N2?16;L?8-400 Y2?16;L?18-300是什么意思
提问者采纳
18-300是什么意思  答?14;&&nbsp;  L;T2.com/zhidao/pic/item/a6efce1b9d16fdfa83fc5495ee7bfb?16?8吧;;是可用的  钢筋图纸,而您说的JZL(井字梁)?8吧。  ②.com/zhidao/wh%3D600%2C800/sign=bee7b715d63f28e22b22cc/a6efce1b9d16fdfa83fc5495ee7bfb:  L.baidu,应是,设计出差错了.jpg" />  3,2跨;”都是您加的?20;L; B2; ?18?14&nbsp.11G101-3第30页?8-400 Y2://e;T2.jpg" esrc="http!但不管它是基础主梁还是井字梁.L;&nbsp,我猜是基础主梁&nbsp,毎侧各配置1?18?18-300是什么意思  JZL1(2)350X750 Y表示第1号基础主梁;2?【例】JZL7(5B)表示第7号基础主梁;应是原位标注;  N2?18;&nbsp?16.hiphotos。&nbsp?20。应该是JZL1(2)350X750 Yc1×c2;T2?16:JZL1(2)350X750 Y(井字梁) B2,我们来理一下:JZL1(2)350X750 Y(井字梁) B2?16:您看它的【例】用了什么.baidu、T等字母代号;&nbsp。我说JZL1(2)350X750 Y它是基础主梁?8,间距400;T2,但缺C1腋长和C2腋高?16,不是井字梁.&nbsp;(怎么拉筋是?14 N2?16的纵向抗扭钢筋;T2,又缺了箍筋。还是与设计联系吧.再来读您问的钢筋图纸。百度知道是解决不了您的问的,高750:  B2,应是?20?8-400 从字母来看表示拉筋,基础梁顶部贯通钢筋2;&nbsp?8-400 应是集中标注?16表示加腋部位斜纵筋为2;&nbsp?20?16&nbsp、B?14表示基础梁底部贯通钢筋2;L;&&nbsp。这是11G101系列图集代号在打架?16,主梁截面尺寸宽350;&nbsp?14&nbsp,加腋;L.com/zhidao/wh%3D450%2C600/sign=51bcbda06e0f064eaadfd/a6efce1b9d16fdfa83fc5495ee7bfb://e,在11G101-1中出现?20;您再细看一下图!若真如您的问?20;L;  Y2?因为井字梁中不会出现Y;&nbsp?16表示梁的两个侧面共配置2?8-400 Y2?14 N2.JZL1(2)350X750 Y&nbsp!  为什么.baidu.hiphotos!都无法指导施工,缺C1腋长和C2腋高://e.。<img class="ikqb_img" src=" N2?只有B2!)  读完您的问?16.Y2!  ③;&nbsp.hiphotos?18-300,间距300;  &&nbsp:  ①:您JZL1(2)350X750 Y说它是(井字梁)
提问者评价
来自团队:
其他类似问题
为您推荐:
其他1条回答
先总的说明一下,您这里的问号是您字体库不全,显示出来的才是问号。在以下的回答中我姑且把他们当做三级钢,用C表示。另外您这里没有加腋信息,姑且用JZL1(2)350X750 Y a*b表示。
一、关于名称:
JZL1(2)350X750 Y(井字梁)JZL1是指名称
;350X750 是截面尺寸;(2)指的是两跨;Y是指加腋,您这里没有加腋信息,如上所示,Y a*b中,a表示腋长,b表示腋高。
二、关于配筋(用C表示?)
B2c20;T2c14 N2c16;Lc8-400 Y2c16;Lc18-300
B表示底部钢筋,T表示顶部钢筋,N是抗扭,Lc是箍筋,。 底部钢筋为2根c20的,顶部钢筋为2根c16的,腰部抗扭2根c16的,箍筋c8@400,Y2c16指的是加腋钢筋2c16;
Lc18-300应该是加腋箍筋,但怎么是18的呢,是不是写错了。没见过18的箍筋,我只能按您写的翻译,加腋箍筋为c18@30...
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁钢筋图集lc什么意思_百度知道
钢筋图集lc什么意思
  钢筋图集lc表示:剪力墙的约束边缘构件沿墙肢方向的长度。  剪力墙(shear wall)又称抗风墙、抗震墙或结构墙。房屋或构筑物中主要承受风荷载或地震作用引起的水平荷载和竖向荷载(重力)的墙体,防止结构剪切(受剪)破坏。  边缘构件:11G101图集把暗柱和端柱统称为“边缘构件”,又把它分为两大类:构造边缘构件和约束边缘构件。YDZ、YAZ是约束边缘端柱、约束边缘暗柱,均属于约束边缘构件;GDZ、GAZ是构造边缘端柱、构造边缘暗柱,均属于构造边缘构件。这些都是剪力墙结构中特有的,他们的作用都一样,设置在剪力墙的边缘,起到改善受力性能的作用。
其他类似问题
为您推荐:
提问者采纳
baidu://b://b,标注墙柱几何尺寸.com/zhidao/wh%3D600%2C800/sign=e2be88a1d258ccbf1be9bd3c29eb07eca50094dda144ad348247://g:剪力墙平面布置图中的lc是约束边缘构件沿墙肢方向的长度.jpg" />  (1)约束边缘构件(见图3.hiphotos.baidu,绘制该墙柱的截面配筋图.baidu.hiphotos。  剪力墙平法施工图制图规则  3.jpg" target="_blank" title="点击查看大图" class="ikqb_img_alink"><img class="ikqb_img" src="http.2://b.jpg" esrc="/zhidao/pic/item/9213b07eca50094dda144ad.3&nbsp.hiphotos./zhidao/wh%3D450%2C600/sign=d16a0dfbbf3eb1354492bfbf932e84e5/9213b07eca50094dda144ad348247.hiphotos。  注.com/zhidao/wh%3D600%2C800/sign=47bdb968dac3/6dbc3e27cb27dd345e5:&#/zhidao/pic/item/6dbc3e27cb27dd345e5; 在剪力墙柱表中表达的内容,规定如下;  1.jpg" esrc="http.jpg" target="_blank" title="点击查看大图" class="ikqb_img_alink"><img class="ikqb_img" src="http. 注写墙柱编号(见表3。&nbsp://g.2-1).baidu。&<a href="<a href="http.2.baidu.2-1)需注明阴影部分尺寸:剪力墙平面布置图中应注明约束边缘构件沿墙肢方向的长度lc(约束边缘翼墙中沿墙肢尺寸为2df时可不注)://g.com/zhidao/wh%3D450%2C600/sign=cc51b02c48fbfbeddc0c3e7b4dc0db00/6dbc3e27cb27dd345e5  钢筋图集lc什么意思  答
来自团队:
其他2条回答
有翼墙或端柱时,不应小于翼墙厚度或端柱沿墙肢方向截面高度加300mmlc为约束边缘构件沿墙肢的长度。对暗柱不应小于墙厚和400mm的较大值
lc是剪力墙的约束边缘构件沿墙肢方向的长度
图集的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁河北润联科技开发有限公司
信用指数:
证书荣誉:
企业认证:
企业信息完整度:
经营模式:
所在地区:
河北省邢台市
主营产品:
入驻时间:
商铺地址:
荣经理先生
电话: 86-
传真: 86-
地址: 河北省邢台市邢湾工业区
联系我时请说是在淘金地上看到的
不是你想要的产品?
,让更多供应商主动联系你!
昆明DDKB-1LC1600液相色谱仪GC1690高性能气相色谱仪区别是什么?
发货地点:
河北省邢台市
发布时间:
产品类别:
"昆明DDKB-1LC1600液相色谱仪GC1690高性能气相色谱仪区别是什么?"详细信息
昆明DDKB-1LC1600液相色谱仪GC1690高性能气相色谱仪区别是什么?
LC1600液相色谱仪
昆明DDKB-1LC1600液相色谱仪GC1690高性能气相色谱仪区别是什么?
1、昆明DDKB-1LC1600液相色谱仪GC1690高性能气相色谱仪区别是什么?热门搜索:GC1690气相色谱仪LC-200型高效液相色谱仪HPLC液相色谱仪10T高效液相色谱仪LC1620高效液相色谱仪GC122气相色谱仪【邢台润联机械设备有限公司】中国质量AAA级企业_消费者放心单位_2014年工业品企业_15天无理由退换货_全国工业品行业领导者_拨打电话请告诉我产品订货号,_:【400-625-1665】2、昆明DDKB-1LC1600液相色谱仪GC1690高性能气相色谱仪区别是什么?多种型号图片
型号:JX118199
型号:JX105329
型号:JX118216
【昆明DDKB-1LC1600液相色谱仪GC1690高性能气相色谱仪区别是什么?一共有_30_多种型号以上只显示1-3种型号,如没有合适您的产品请咨询 邢台润联机械设备有限公司】3、昆明DDKB-1LC1600液相色谱仪GC1690高性能气相色谱仪区别是什么?多种型号内容型号:JX118199GC1690系列高性能气相色谱仪,整合国内气相色谱仪优点而研制成的一代气相色谱仪。可根据使用需要灵活选配氢焰离子化(FID)、热导(TCD)、火焰光度(FPD)、氮磷(NPD)、电子捕获(ECD)等检测仪,可对沸点399℃以下有机物、无机物及气体进行常量、微量甚至痕量分析。广泛用于石油、化工、化肥、制药、电力、食品、发酵、环保和冶金等纵多领域。GC16系列也以优异的性价比和完善的售后服务而成为国内许多气相用户的产品。主要特点(一)三大保护1)过温保护:当各热区实际温度超过设定的值时,过温保护装置工作,自动切断仪器各加热区电源,同时报警以避免发生意外。2)过流保护:当TCD检测器工作时,如电流设置过大或TCD阻值突然增加时,过流保护装置工作,自动切断TCD桥电流,同时报警并显示OVERTCD以保护钨丝不被烧毁(若用户由于操作失误,在未通载气的情况下启动TCD,该装置亦可自动切断电源以保护钨丝)。也可增加放大电路,以增加灵敏度。3)死机保护:仪器在工作时,当出现各加热区的热敏元件短路、断路、加热丝对地、微机操作系统死机等情况时,仪器能自动切断电源并报警,避免继续工作而出现意外。以上三点保护功能可使你更加安全放心的进行分析工作。(二)六大温控GC1690型气相色谱仪能够进行六路温控,其中AUX1控制外加热装置,柱温和AUX1带五阶程序升温。(三)气路控制气路控制器采用外置式,毛细管气路箱、燃气助燃气气路箱独立放置,气流比调节直观易懂,控制灵活,而且一旦出现某一气路问题可以立即切换,对主机操作无影响,维护方便。(四)噪声小主机内各风叶采用模具一次成型,对称性好,避免在运转时出现不平衡而产生噪声。(五)配置灵活毛细管进样器独立,可以根据用户要求本配置双毛细管进样器双放大板,以便同时安装两支毛细管柱;也可以同时安装两支填充柱;也可以同时安装一支填充柱和一支毛细管柱;也可以在此基础上灵活增加TCD、FPD、NPD、ECD检测器以满足不同的分析要求;一台仪器多可以安装三种进样器和三种检测器。(六)外型美观用立式柱箱,外形美观大方,并且占用面积小,适合实验室狭小的空间使用,新款采用背压阀分流/不分流模式。(七)气路控制器气路控制器采用外置式,单路或双路毛细管气路箱,单路或双路载气气路箱,单路或双路燃气助燃气气路箱独立放置,气流比调节直观易懂,控制灵活,可根据分析目的选择为合适的流量控制器组合。(八)显示器/键盘GC1690的显示信息丰富,键盘操作简便,明亮易观的背光液晶显示屏,简便易懂中文键盘操作,减轻了的负担。绿色键为温度控制系列;蓝色键为检测器参数控制系列;白色键为数字键系列;黑色键为外部事件控制系列。(九)检测器(DET)可同时安装以下检测器中的任意三个:FID氢焰离子化检测器TCD热导检测器FPD火焰光度检测器NPD氮磷检测器ECD电子捕获检测器(十)进样器1)填充柱柱上进样2)分流/不分流进样3)大口径毛细管WBC进样4)填充柱汽化进样5)六通阀气进样式(十一)柱温箱使用获得公认的高性能大柱温箱考虑到气化室或检测器加热产生的热辐射,柱温箱设计成竖立结构,使用温度可达到420℃,温控范围+7℃~420℃,5阶程序升温,自动后开门,可以设定420℃以内的高度使用温度,固定的450℃独立保护电路,具有双重保护结构。主要技术指标柱温箱温控范围室温+7℃~420℃温控精度优于0.1℃内部体积程序阶数5阶升温速率0.1~39.9℃/min任意设定升温时间0~665min(增量1min)技术参数指标检测器灵敏度或敏度感漂移噪音线性范围氢焰(FID)Mt110-11g/s110-12(A/30min)210-13A106热导(TCD)S2000mV.m1/mg0.1(mV/30min)0.01mV106火焰(FPD)P211-12g/sS510-11g/s410-11(A/30min)210-11AP103S102氮气(NPD)N110-12g/sP510-11g/s210-12(A/30min)410-13A103电子捕获(ECD)210-13g/ml50(uV/30min)20uV103来源网址:/product/gid-118199.htmlGC1690气相色谱仪型号:JX105329LC-100 PLUS智能全控液相色谱系统由P100 高压恒流泵与UV100紫外检测器直接构成等度分析系统、梯度分析系统。使用WS100工作站可以同时控制数台P100 高压恒流泵、UV100紫外检测器及恒温柱箱等,实行多元高压梯度洗脱、波长扫描等功能。 LC-100 PLUS智能全控液相色谱系统操作既直观又方便。它可以在不联计算机时通过仪器本身的小键盘输入所有控制信息,所有操作都在液晶屏上显示出。也可连接计算机,使用工作站软件。该工作站与色谱仪之间采用纯数字通讯,读入的均为直接二通道采样数据,不经过任何处理,不存在信号畸变,这样保证了采样精度和后处理时不丢失数据。采样精度达18位(0.1秒/次x2通道)。 WS100工作站分为实时采样、后处理、波长回放、图谱比较四个独立的单元。其中实时采样单元可以直接监控多达4台泵及紫外检测器。可以任意改变波长、泵的流量、氘灯开关,可以在任意时刻停泵或者切换转向阀,让组分保留在流通池里,然后自动启动波长扫描,可以得到该组分对不同波长的连续谱图。还可以连接一个转换阀,通过事件设置控制转换阀,从而达到分离回收流动相。这些都是其它工作站所不能做到的。另外,所有显示数据都已经转换成AU值,无须用户进行烦琐的折换。由于软件是在WINDOWS系统下运行,所有功能菜单化,不需要学习,一看就会,操作简便来源网址:/product/gid-105329.htmlHPLC液相色谱仪型号:JX118216GC112A气相色谱仪商品简述:特点与性能:●全新设计的GC112A微机温度控制系统,采用了国际先进的控制技术。控温精度高(优于0.05℃)可靠性和抗性能优越。●健盘设定各种控制和使用参数(包括检测器操作参数),机内具有自诊断、断电保护、文件存储及调用、极限温度设定等功能。可准确显示各路温控设定值、实际值、TCD桥流;FID放大器灵敏度、保留和分析时间等。特点与性能:●全新设计的GC112A微机温度控制系统,采用了国际先进的控制技术。控温精度高(优于0.05℃)可靠性和抗性能优越。●健盘设定各种控制和使用参数(包括检测器操作参数),机内具有自诊断、断电保护、文件存储及调用、极限温度设定等功能。可准确显示各路温控设定值、实际值、TCD桥流;FID放大器灵敏度、保留和分析时间等。●且有五路独立的控制区域:柱箱、进样器、检测器、热导池、辅助器。●该产品可实现五阶程序升温,具有柱箱自动降温即后开门功能,实现快速冷却。●仪器基型配有双氢火焰离子化检测器(FID),可选配GC112A-TCD热导检测器、气体进样阀、转化炉等附件,可同时安装二种检测器(FID和TCD),且检测器灵敏度高(如FID的测试结果:Dt110-11g/s),稳定时间短,喷口的清洗和安装方便。●该产品可容易方便地安装填充柱和毛细管柱(0.53大口径柱或小口径柱),且附件中有全套的毛细管分流进样接头和尾吹接头(不需另外付费)。可选配分流/不分流进样器、0.53mm大口径毛细管柱直接进样器。●仪器可进行填充柱分析或毛细管柱分析,可实现多种进样方式。填充柱:柱上进样、瞬时汽化进样、气体进样;毛细管柱:分流进样、不分流进样、0.53大口径柱直接进样。●仪器具有双气路、双进样器、双填充柱系统结构,可有效地实时抑制基线波动及漂移,适合于程序升温分析。的刻度式气路控制阀件,具有高重现性和稳定性。●仪器具有自动开启和自动关闭温度控制系统、数据保存、文件存储及调用、过温保护等先进功能。●大容量柱箱(300mm280mm270mm)方便安装毛细管柱和双填充柱;内藏式加热丝结构,更有利于石英毛细管柱分析。●仪器附有气路管、扳手工具、注射针和各类接头,用户仅须准备气源即可(以上附件也无须另外付费)。●采用CAD设计技术,机械零件是在进口立式HITACHI数控加工中心和AMADA数控冲床等先进设备上实施加工,机械精度高,结构可靠,且外型美观,极富人性化。主要技术指标:●温度控制:控温范围:室温上7℃~400℃(增量1℃)控温对象:柱箱、检测器、热导池、进样器、辅助器(备用)程升阶数:五阶程升速率:0.1℃~40℃/min(增量0.1℃)恒温时间:0~655min(增量1min)●火焰离子化检测器(FID):检测限:DFID510-11g /s(样品:C16)测试结果:DFID110-11g /s基线噪声:510-14A基线漂移:610-13A/h线性范围:106●热导检测器(TCD)灵敏度:2000mV.ml/mg基线噪声:20V商品简述:主要特性:●全新设计的高性能HRGC。●仪器(基型)装有双FID检测器,可选配GC122-TCD热导检测器,GC122-ECD电子捕获检测器,GC122- NPD氮磷检测器,GC122-FPD火焰光度检测器及转化炉、气体进样阀等附件。主要特性:●全新设计的高性能HRGC。●仪器(基型)装有双FID检测器,可选配GC122-TCD热导检测器,GC122-ECD电子捕获检测器,GC122-NPD氮磷检测器,GC122-FPD火焰光度检测器及转化炉、气体进样阀等附件。●仪器(基型)具有双填充柱、双进样器、双气路系统结构,可有效地实时抑制基线波动及漂移,适合于程序升温分析;仪器能同时安装三种检测器,不同的应用采用不同的检测器组合,并能实现检测器的串联和并联工作。●仪器(基型)配有完整的毛细管分析系统,独立的毛细管分流进样器(包括隔膜清扫、分流及尾吹调节)。可选配毛细管分流/不分流进样器、冷柱上进样器、0.53mm大口径毛细管直接进样器。适应于玻璃、柔性石英玻璃等各类不同口径、规格及长度的毛细管柱。●仪器气路系统采用高精度的刻度式稳流阀、稳压阀及针形阀。流量调节方便直观,且具有良好的重现性和稳定性。●仪器可实现下述多种进样方式;填充柱:柱上进样、瞬时汽化进样、气体进样。毛细管柱:分流进样、不分流进样、大口径毛细管柱直接进样。●全新开发的微机温度控制系统。能同时对柱箱、离子化室、热导池检测器、毛细管进样器、填充柱进样器、辅助(备用)共六路加热区实现高精度(优于0.1℃)宽范围(至400℃)的温度控制,温度过冲及偏差小于2℃或更低。●柱箱可实现五阶程序升温控制,升温速率达40℃/min。●系统具有断电保护、温度极限设置、温度扫描、快速自动降温即后开门等功能。●开放式的微机温度控制系统可选配RS232通讯板和FJ-2000色谱工作站,实现色谱工作站与仪器间双向通讯控制及数据处理。●全镜面不锈钢大容量柱箱(350mm280mm300mm)能同时安装毛细管柱和双填充柱;内藏式加热丝结构,更有利于石英毛细管柱分析。基型技术指标:●温度控制:控温范围:室温上7℃~400℃(增量1℃)控温对象:柱箱、离子化室、热导池、进样器A、进样器B、辅助(备用)程升阶数:五阶程升速率:0.1℃~40℃/min(增量0.1℃)●火焰离子化检测器(FID):检测限:DFID110-11g/s(样品:C16)测试结果:DFID510-12g/s基线噪声:510-14A基线漂移:610-13A/h线性范围:106GC122专用选配检测器型号检测器名称技术指标特点GC122-TCD热导检测器灵敏度:S2500mv.ml/mg(载气H2;样品:C16);基线噪声:20V;线性范围:104采用铼钨丝,恒流电源,差分放大电路,微型池体积GC122-ECD电子捕获检测器检测限:MECD210-13g/s(样品:C16 -666);基线噪声:10A;线性范围103采用镍-63放射源,工作温度可达350℃,对卤素化合物有特高的敏感。GC122-NPD氮磷检测器检测限:对氮:MNPD510-11g/s;对磷:MNPD510-12g/s;基线噪声:41013A,线性范围:103采用进口高稳定性铷珠,适用于氮磷化合物的残留量分析GC122-FPD火焰光度检测器检测限:对磷:MFPD210-11g/s;对硫:MFPD110-10g/s;基线噪声:10 V;线性范围:对磷:103;对硫:102双火焰结构,采用光导纤维作为光信号传输线,大大降低检测器高温对电部件的影响,适用于对痕量磷、硫的分析。来源网址:/product/gid-118216.htmlGC122气相色谱仪温馨提示:
润联网为您提供的详细产品价格、产品图片等产品介绍信息,您可以直接联系厂家获取的具体资料,联系时请说明是在润联网看到的,并告知型号
联系我时请说是在淘金地上看到的
提示: 您在淘金地网上采购商品属于商业贸易行为。以上所展示的商品/服务的标题、价格、详情等信息内容系由店铺经营者发布,其真实性、准确性和合法性均由店铺经营者负责。请意识到互联网交易中的风险是客观存在的。
类别的产品
此处显示 class "clr" 的内容
查看同类的其它产品: & &
热门搜索:
此处显示 class "clr" 的内容
按货源分类
按字母分类
淘金地--会员登录
* 请选择或直接输入您关心的问题:
--(选择常用问题)--
我公司有意购买此产品,可否提供此产品的报价单和最小起订量?
我对贵公司的产品非常感兴趣,能否发一些详细资料给我参考
请您发一份详细的产品规格说明,谢谢!
请问贵公司产品是否可以代理?代理条件是什么?
* 请选择您想了解的产品信息:
* 联系人:
* 手机号码:
您的询盘已经提交成功!
以下供应商也提供类似产品,建议您将询盘信息一并发送给他们博客访问: 598624
博文数量: 838
博客积分: 0
博客等级: 民兵
技术积分: 2906
注册时间:
认证徽章:
技而优则仕
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: 嵌入式
原文地址: 作者:
Linux下创建库函数
  使用GNU的工具我们如何在Linux下创建 自己的程序函数库?一个“程序函数库”简单的说就是一个文件包含了一些编译好的代码和数据,这些编 译好的代码和数据可以在事后供其他的程序使用。程序函数库可以使整个程序更加模块化,更容易重新编译,而且更方便升级。程序函数库可分为3种类型:静态函 数库(static libraries)、共享函数库(shared libraries)和动态加载函数库(dynamically loaded libraries)。
  静态函数库是在程序执行前就加入到目标程序中 去了;而共享函数库则是在程序启动的时候加载到程序中,它可以被不同的程序共享;动态加载函数库则 可以在程序运行的任何时候动态的加载。实际上,动态函数库并非另外一种库函数格式,区别是动态加载函数库是如何被程序员使用的。后面我们将举例说明。
  本文档主要参考Program Library HOWTO,作者是luster(hwang@ustc.edu),任何非商业目的的再次发行本文档都是允许的,但是请保留作者信息和本版权声明。本文档首先在.cn发布。
  2. 静态函数库
  静态函数库实际上就是简单的一个普通的目标文 件的集合,一般来说习惯用“.a”作为文件的后缀。可以用ar这个程序来产生静态函数库文件。Ar 是archiver的缩写。静态函数库现在已经不在像以前用得那么多了,主要是共享函数库与之相比较有很多的优势的原因。慢慢地,大家都喜欢使用共享函数 库了。不过,在一些场所静态函数库仍然在使用,一来是保持一些与以前某些程序的兼容,二来它描述起来也比较简单。
  静态库函数允许程序员把程序link起来而不 用重新编译代码,节省了重新编译代码的时间。不过,在今天这么快速的计算机面前,一般的程序的重新 编译也花费不了多少时间,所以这个优势已经不是像它以前那么明显了。静态函数库对开发者来说还是很有用的,例如你想把自己提供的函数给别人使用,但是又想 对函数的源代码进行保密,你就可以给别人提供一个静态函数库文件。理论上说,使用ELF格式的静态库函数生成的代码可以比使用共享函数库(或者动态函数 库)的程序运行速度上快一些,大概1-5%。
  创建一个静态函数库文件,或者往一个已经存在地静态函数库文件添加新的目标代码,可以用下面的命令:
ar rcs my_library.a file1.o file2.o
  这个例子中是把目标代码file1.o和 file2.o加入到my_library.a这个函数库文件中,如果my_library.a不存在 则创建一个新的文件。在用ar命令创建静态库函数的时候,还有其他一些可以选择的参数,可以参加ar的使用帮助。这里不再赘述。
  一旦你创建了一个静态函数库,你可以使用它 了。你可以把它作为你编译和连接过程中的一部分用来生成你的可执行代码。如果你用gcc来编译产生可 执行代码的话,你可以用“-l”参数来指定这个库函数。你也可以用ld来做,使用它的“-l”和“-L”参数选项。具体用法,可以参考info:gcc。
 3. 共享函数库
  共享函数库中的函数是在当一个可执行程序在启动的时候被加载。如果一个共享函数库正常安装,所有的程序在重新运行的时候都可以自动加载最新的函数库中的函数。对于Linux系统还有更多的可以实现的功能:
o 升级了函数库但是仍然允许程序使用老版本的函数库。 o 当执行某个特定程序的时候可以覆盖某个特定的库或者库中指定的函数。 o 可以在库函数被使用的过程中修改这些函数库。
  3.1. 一些约定
  如果你要编写的共享函数库支持所有有用的特 性,你在编写的过程中必须遵循一系列约定。你必须理解库的不同的名字间的区别,例如它的 “soname”和“real name”之间的区别和它们是如何相互作用的。你同样还要知道你应该把这些库函数放在你文件系统的什么位置等等。下面我们具体看看这些问题。
  3.1.1. 共享库的命名
  每个共享函数库都有个特殊的名字,称作“soname”。Soname名字命名必须以“lib”作为前缀,然后是函数库的名字,然后是“.so”,最后是版本号信息。不过有个特例,就是非常底层的C库函数都不是以lib开头这样命名的。
  每个共享函数库都有一个真正的名字(“real name”),它是包含真正库函数代码的文件。真名有一个主版本号,和一个发行版本号。最后一个发行版本号是可选的,可以没有。主版本号和发行版本号使你可以知道你到底是安装了什么版本的库函数。
另外,还有一个名字是编译器编译的时候需要的函数库的名字,这个名字就是简单的soname名字,而不包含任何版本号信息。
  管理共享函数库的关键是区分好这些名字。当可 执行程序需要在自己的程序中列出这些他们需要的共享库函数的时候,它只要用soname就可以了; 反过来,当你要创建一个新的共享函数库的时候,你要指定一个特定的文件名,其中包含很细节的版本信息。当你安装一个新版本的函数库的时候,你只要先将这些 函数库文件拷贝到一些特定的目录中,运行ldconfig这个实用就可以。Ldconfig检查已经存在的库文件,然后创建soname的符号链接到真正 的函数库,同时设置/etc/ld.so.cache这个缓冲文件。这个我们稍后再讨论。
  Ldconfig并不设置链接的名字,通常的 做法是在安装过程中完成这个链接名字的建立,一般来说这个符号链接就简单的指向最新的soname 或者最新版本的函数库文件。最好把这个符号链接指向soname,因为通常当你升级你的库函数的后,你就可以自动使用新版本的函数库勒。
  我们来举例看看:
   /usr/lib/libreadline.so.3 是一个完全的完整的soname,ldconfig可以设置一个符号链接到其他某个真正的函数库文件,例如是 /usr/lib/libreadline.so.3.0。同时还必须有一个链接名字,例如/usr/lib/libreadline.so 就是一个符号链接指向/usr/lib/libreadline.so.3。
&&&&& 3.1.2. 文件系统中函数库文件的位置
  共享函数库文件必须放在一些特定的目录里,这样通过系统的环境变量设置,应用程序才能正确的使用这些函数库。大部分的源码开发的程序都遵循 GNU的一些标准,我们可以看info帮助文件获得相信的说明,info信息的位置是:info: standards#Directory_Variables。GNU标准建议所有的函数库文件都放在/usr/local/lib目录下,而且建议命令 可执行程序都放在/usr/local/bin目录下。这都是一些习惯问题,可以改变的。
  文件系统层次化标准FHS(Filesystem Hierarchy Standard)(/fhs)规定了在一个发行包中大部分的函数库文件应该安装到/usr/lib目录 下,但是如果某些库是在系统启动的时候要加载的,则放到/lib目录下,而那些不是系统本身一部分的库则放到/usr/local/lib下面。
  上面两个路径的不同并没有本质的冲突。GNU提出的标准主要对于开发者开发源码的,而FHS的建议则是针对发行版本的路径的。具体的位置信息可以看/etc/ld.so.conf里面的配置信息。
  3.2. 这些函数库如何使用
  在基于GNU glibc的系统里,包括所有的linux系统,启动一个ELF格式的二进制可执行文件会自动启动和运行一个program loader。对于Linux系统,这个loader的名字是/lib/ld-linux.so.X(X是版本号)。这个loader启动后,反过来就会 load所有的其他本程序要使用的共享函数库。
  到底在哪些目录里查找共享函数库呢?这些定义缺省的是放在/etc/ld.so.conf文件里面,我们可以修改这个文件,加入我们自己的 一些 特殊的路径要求。大多数RedHat系列的发行包的/etc/ld.so.conf文件里面不包括/usr/local/lib这个目录,如果没有这个目 录的话,我们可以修改/etc/ld.so.conf,自己手动加上这个条目。
  如果你想覆盖某个库中的一些函数,用自己的函数替换它们,同时保留该库中其他的函数的话,你可以在/etc/ld.so.preload中加入你想要替换的库(.o结尾的文件),这些preloading的库函数将有优先加载的权利。
  当程序启动的时候搜索所有的目录显然会效率很低,于是Linux系统实际上用的是一个高速缓冲的做法。Ldconfig缺省情况下读出 /etc/ld.so.conf相关信息,然后设置适当地符号链接,然后写一个cache到/etc/ld.so.cache这个文件中,而这个 /etc/ld.so.cache则可以被其他程序有效的使用了。这样的做法可以大大提高访问函数库的速度。这就要求每次新增加一个动态加载的函数库的时 候,就要运行ldconfig来更新这个cache,如果要删除某个函数库,或者某个函数库的路径修改了,都要重新运行ldconfig来更新这个 cache。通常的一些包管理器在安装一个新的函数库的时候就要运行ldconfig。
  另外,FreeBSD使用cache的文件不一样。FreeBSD的ELF cache是/var/run/ld-elf.so.hints,而a.out的cache责是/var/run/ld.so.hints。它们同样是通过ldconfig来更新。
  3.3. 环境变量
  各种各样的环境变量控制着一些关键的过程。例如你可以临时为你特定的程序的一次执行指定一个不同的函数库。Linux系统中,通常变量 LD_LIBRARY_PATH就是可以用来指定函数库查找路径的,而且这个路径通常是在查找标准的路径之前查找。这个是很有用的,特别是在调试一个新的 函数库的时候,或者在特殊的场合使用一个肥标准的函数库的时候。环境变量LD_PRELOAD列出了所有共享函数库中需要优先加载的库文件,功能和 /etc/ld.so.preload类似。这些都是有/lib/ld-linux.so这个loader来实现的。值得一提的是, LD_LIBRARY_PATH可以在大部分的UNIX-linke系统下正常起作用,但是并非所有的系统下都可以使用,例如HP-UX系统下,就是用 SHLIB_PATH这个变量,而在AIX下则使用LIBPATH这个变量。
  LD_LIBRARY_PATH在开发和调试过程中经常大量使用,但是不应该被一个普通用户在安装过程中被安装程序修改,大家可以去参考 /~barr/ldpath.html,这里有一个文档专门介绍为什么不使用LD_LIBRARY_PATH这个 变量。
  事实上还有更多的环境变量影响着程序的调入过程,它们的名字通常就是以LD_或者RTLD_打头。大部分这些环境变量的使用的文档都是不全,通常搞得人头昏眼花的,如果要真正弄清楚它们的用法,最好去读loader的源码(也就是gcc的一部分)。
  允许用户控制动态链接函数库将涉及到setuid/setgid这个函数如果特殊的功能需要的话。因此,GNU loader通常限制或者忽略用户对这些变量使用setuid和setgid。如果loader通过判断程序的相关环境变量判断程序的是否使用了 setuid或者setgid,如果uid和euid不同,或者gid和egid部一样,那么loader就假定程序已经使用了setuid或者 setgid,然后就大大的限制器控制这个老链接的权限。如果阅读GNU glibc的库函数源码,就可以清楚地看到这一点,特别的我们可以看elf/rtld.c和sysdeps/generic/dl-sysdep.c这两 个文件。这就意味着如果你使得uid和gid与euid和egid分别相等,然后调用一个程序,那么这些变量就可以完全起效。
3.4. 创建一个共享函数库
  现在我们开始学习如何创建一个共享函数库。其 实创建一个共享函数库非常容易。首先创建object文件,这个文件将加入通过gcc –fPIC 参数命令加入到共享函数库里面。PIC的意思是“位置无关代码”(Position Independent Code)。下面是一个标准的格式:
gcc -shared -Wl,-soname,your_soname -o library_name file_list library_list
  下面再给一个例子,它创建两个object文件(a.o和b.o),然后创建一个包含a.o和b.o的共享函数库。例子中”-g”和“-Wall”参数不是必须的。
gcc -fPIC -g -c -Wall a.cgcc -fPIC -g -c -Wall b.cgcc -shared -Wl,-soname,liblusterstuff.so.1 -o liblusterstuff.so.1.0.1 a.o b.o -lc
  下面是一些需要注意的地方:
&· 不 用使用-fomit-frame-pointer这个编译参数除非你不得不这样。虽然使用了这个参数获得的函数库仍然可以使用,但是这使得调试程序几乎 没有用,无法跟踪调试。&· 使用-fPIC来产生代码,而不是-fpic。&· 上面行中的参数,有的是用逗号隔开的,有的是用空格隔开的。&· 某些情况下,使用gcc 来生成object文件,需要使用“-Wl,-export-dynamic”这个选项参数。通常,动态函数库的符号表里面包含了这些动态的对象的符号。 这个选项在创建ELF格式的文件时候,会将所有的符号加入到动态符号表中。可以参考ld的帮助获得更详细的说明。
  3.5. 安装和使用共享函数库
  一旦你有了一个共享函数库,你还需要安装它。其实简单的方法就是拷贝你的库文件到指定的标准的目录(例如/usr/lib),然后运行ldconfig。
  如果你没有权限去做这件事情,例如你不能修改 /usr/lib目录,那么你就只好通过修改你的环境变量来实现这些函数库的使用了。首先,你需要 创建这些共享函数库;然后,设置一些必须得符号链接,特别是从soname到真正的函数库文件的符号链接,简单的方法就是运行ldconfig:
ldconfig -n directory_with_shared_libraries
  然后你就可以设置你的LD_LIBRARY_PATH这个环境变量,它是一个以逗号分隔的路径的集合,这个可以用来指明共享函数库的搜索路径。例如,使用bash,就可以这样来启动一个程序my_program:
LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH my_program
  如果你需要的是重载部分函数,则你就需要创建 一个包含需要重载的函数的object文件,然后设置LD_PRELOAD环境变量。通常你可以很 方便的升级你的函数库,如果某个API改变了,创建库的程序会改变soname。然而,如果一个函数升级了某个函数库而保持了原来的soname,你可以 强行将老版本的函数库拷贝到某个位置,然后重新命名这个文件(例如使用原来的名字,然后后面加.orig后缀),然后创建一个小的“wrapper”脚本 来设置这个库函数和相关的东西。例如下面的例子:
#!/bin/sh export LD_LIBRARY_PATH=/usr/local/my_lib:$LD_LIBRARY_PATH exec /usr/bin/my_program.orig $*
  我们可以通过运行ldd来看某个程序使用的共享函数库。例如你可以看ls这个实用工具使用的函数库:
ldd /bin/ls
&&&&& libtermcap.so.2 => /lib/libtermcap.so.2 (0x)
&&&&& libc.so.6 => /lib/libc.so.6 (0x)
&&&&& /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x)
  通常我们可以看到一个soname的列表,包括路径。在所有的情况下,你都至少可以看到两个库:
· /lib/ld-linux.so.N(N是1或者更大,一般至少2)。这是用于加载其他所有的共享库的库。
· libc.so.N(N应该大于或者等于6)。这是C语言函数库。
  值得一提的是,不要在对你不信任的程序运行 ldd命令。在ldd的manual里面写得很清楚,ldd是通过设置某些特殊的环境变量(例如,对 于ELF对象,设置LD_TRACE_LOADED_OBJECTS),然后运行这个程序。这样就有可能使得某地程序可能使得ldd来执行某些意想不到的 代码,而产生不安全的隐患。
3.6. 不兼容的函数库
  如果一个新版的函数库要和老版本的二进制的库不兼容,则soname需要改变。对于C语言,一共有4个基本的理由使得它们在二进制代码上很难兼容:
  o. 一个函数的行文改变了,这样它就可能与最开始的定义不相符合。
  o. 输出的数据项改变了。
  o. 某些输出的函数删除了。
  o. 某些输出函数的接口改变了。
  如果你能避免这些地方,你就可以保持你的函数库在二进制代码上的兼容,或者说,你可以使得你的程序的应用二进制接口(ABI:Application Binary Interface)上兼容。
阅读(75) | 评论(0) | 转发(0) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。

我要回帖

更多关于 i959 11g分区什么意思 的文章

 

随机推荐