ldd不是一个可执行程序,而只是一个shell脚本
在linux环境下,c++编译得到库文件后缀包括:.so or .a or .la,
当然,linux下文件的类型是不依赖于其后缀名的,后缀及其含义:
.so 为共享库 : 动态库拿裤亮(shared library/shared object/dynamic link library),
.a为静态库 : archive / static library
.la为libtool自动生成的一些共享库,可以用vi编辑查看,主要记录了一些配置信息。可纯陪以用消宽如下命令查看*.la文件的格式 file *.la
linux下文件的类型是不依赖于其后缀名的,但一般来讲: .ko 是linux 2.6内核使用的动态连接文件的后缀名,也就是模块文件,用来在linux系统启动时加载内核模块 .o 是目标文件,相当于windows中的.obj文件 .so 为共享库,是shared object,用于动态连接的,和dll差不多 .a 为静态库,是好多个.o合在一起,用于静态连接 .la 为libtool自动生成的一些共享库,vi编辑查看,主要记录了一些配置信息。可以用如下命令查看file *.la来查看文件类型 创建.a库文件和.o库文件: $ gcc -c mylib.c $ ar -r mylib.a mylib.o 动态链接库*.so的编译与使用 下面通过一个例子来介绍如何生成一个动态库。这里有一个头文件,三个.c文件: so_test.h test_a.c test_b.c test_c.c 我们将这几个文件编译成一个动态库:libtest.so。 代码 so_test.h: #include <stdio.h> #include <stdlib.h> void test_a() void test_b() void test_c() test_a.c: #include /so_test.h/ void test_a() { printf(/this is in test_a...//n/) } test_b.c: #include /so_test.h/ void test_b() { printf(/this is in test_b...//n/) } test_c.c: #include /so_test.h/ void test_c() { printf(/this is in test_c...//n/) } $ gcc test_a.c test_b.c test_c.c -fPIC -shared -o libtest.so 2、动态库的链接 在1、中,我们已经成功生成了一个自己的动态链接库libtest.so,下面我们通过一个程序来调用这 个库里的函数。程序的源文件为:test.c。 #include /so_test.h/ int main() { test_a() test_b() test_c() return 0 } 将test.c与动态库libtest.so链接生成执行文件test: $ gcc test.c -L. -ltest -o test 测试是否动态连接,如果列出libtest.so,那么应该是连接正常了 $ ldd test 这时应该会报找不到libtest.so,这里我们再执行一下: $ sudo cp libtest.so /usr/lib 把这个库拷贝到系统默认的库路径即可,这样只是临时测试使用,更合理的方法看后面介绍 执行test,可以看到它是如何调用动态库中的函数的。 3、编译参数解析 最主要的是GCC命令行的一个选项: -shared 该选项指定生成动态连接库(让连接器生成T类型的导出符号表,有时候也生成 弱连接W类型的导出符号),不用该标志外部程序无法连接。相当于一个可执行文件 -fPIC:表示编译为位置独立的代码,不用此选项的话编译后纤锋的代码是位置相毁如晌关的所以动 态载入时是通过代码拷贝的方式来满足不同进程的需要,而不能达到真正代码段共享的目的。 -L.:表示要连接的库在当前目录中 -ltest:编译器查找动态连接库时有隐含的命名规则,即在给出的名字前面加上lib,后面加上.so来确定库的名称 LD_LIBRARY_PATH:这个环境变量指示动态连接器可以装载动态库的路径。 当然如果有root权限的话,可以修改/etc/ld.so.conf文件,然后调用/sbin/ldconfig来 达到同样的目的,不过如果没有root权限,那么只能采用输出LD_LIBRARY_PATH的方法了。 4、注意 调用动态库的时候有几橡者个问题会经常碰到,有时,明明已经将库的头文件所在目录 通过 -I include进来了,库所在文件通过-L参数引导,并指定了-l的库名,但通过ldd命令察看时, 就是死活找不到你指定链接的so文件,这时你 要作的就是通过修改LD_LIBRARY_PATH或 者/etc/ld.so.conf文件来指定动态库的目录。通常这样做就可以解决库无法链接的问题 了。 makefile里面怎么正确的编译和连接生成.so库文件,然后又是在其他程序的makefile里面如何编译 和连接才能调用这个库文件的函数???? 答: 你需要告诉动态链接器、加载器ld.so在哪里才能找到这个共享库,可以设置环境变量把库的 路径添加到库目录/lib和/usr/lib,LD_LIBRARY_PATH=$(pwd),这种方法采用命令行方法不太方便,一种替 代方法 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^注释^^^^^^^^^^^^^^^^^^^^^^^^^^^^ LD_LIBRARY_PATH可以在/etc/profile还是~/.profile还是./bash_profile里设置,或者.bashrc里 , 改完后运行source /etc/profile或. /etc/profile 更好的办法是添入/etc/ld.so.conf, 然后执行/sbin/ldconfig ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^注释^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 是把库路径添加到/etc/ld.so.conf,然后以root身份运行ldconfig 也可以在连接的时候指定文件路径和名称-I -L. GCC=gcc CFLAGS=-Wall -ggdb -fPIC #CFLAGS= all: libfunc test libfunc:func.o func1.o $(GCC) -shared -Wl,-soname,libfunc.so.1 -o libfunc.so.1.1 $< ln -sf libfunc.so.1.1 libfunc.so.1 ln -sf libfunc.so.1 libfunc.so ***********************************************注释 ************************************************ ln -s是用来创建软链接,也就相当于windows中的快捷方式,在当前目录中创建上一级目录中的文件 ttt的命名为ttt2软链接的命令是ln -s ../ttt ttt2,如果原文件也就是ttt文件删除的话,ttt2也变成了 空文件。 ln -d是用来创建硬链接,也就相当于windows中文件的副本,当原文件删除的时候,并不影响副本 的内容。 编译目标文件时使用gcc的-fPIC选项,产生与位置无关的代码并能被加载到任何地址:1. cad图层快捷键命令大全表CAD中图层特性管理器的快捷键是“LA”,可以通过以下方法将图层特性管理器打开:
1、打开电脑,找到桌面中的一个CAD文档,如下:
2、点击打开文档,然后在键盘中输入“LA”,然后按键盘上的回车键进行确认:
3、此时再看绘图区,即可将图层特性管理器打开:
4、然后即可用鼠标对图层进行切换:
2. 图层CAD快捷键
在CAD中关闭某一图层的快捷键的方法:步骤1、输入LA 快捷键,会d出一个“图层特性管理器”对话框。
2、选中其中的一个图层,按Ctrl+A快捷键按钮,选择某一图层。
3、点击“灯泡形状的”图标。
4、点击“确定”按钮,退出“图层特性管理器”。
3. cad的图层快捷键
1、打开CAD软件,在菜单栏中用鼠标单击图层属性,或输入快捷键LA打开图层属性命令。
2、在打开的图层属性命令栏中,选择图层状态管理器工具,也可以使用快捷键Alt+s打开。
3、在打开的图层状态管理器命令栏中,选择新建命令,将新图层命名为建筑图层,点击确定,完成新建命令。
4、完成新建命令后,在图层状态管理器命令界面中选择输出,把新建的图层状态保存至我的文档,命名为建筑图层。
5、重新打开CAD软件,选择图形特征--图层状态管理器--输入。
6、在d出的界面中打开我的文档,找到刚刚保存的建筑图层,点击打开,在d出的命令栏中选择恢复状态,即可完成图层导入。
4. cad图层快捷键命令大全表图
有这样的命令:LAYISO、、选择你要显示的图层。。其它的层就全部隐藏了()。还有与它相反的命令。选哪个图层,哪个图层就隐藏。。
还要以按S ,,看下面的命令,可以把这些隐藏的层设置成灰色的冻结状态。。
补充一下:退出来的命令就是::LAYON
5. CAD图层命令快捷键
命令: layoff ,选择要关闭的图层. 命令: layiso ,图层隔离,隐藏或锁定除选择的图层外的其他图层. PS:CAD2009的图层命令,这些命令工具栏都有的。 天正建筑的命令栏: 也很实用噢。
6. CAd图层快捷键
la是打开图层管理,在里面编辑图层。或者直接点击工具栏图层栏切换图层。没有切换的快捷键,都是在工具栏里面自己去点击的。如果图层多的话,点开图层工具栏,按图层名字的第一个字母,会自动跳到相关的图层上面。
比如柱网图层dote,点开族拿图层,按下字母d,会自动跳到这上面去的。
7. CAD的图层快捷键
cad一键解锁所有图层命令的方法:首先打开cad软件;然后在【查看器】中选择【图层】;最后在【锁定】中,点击对应图层的锁图标,即可一键解锁CAD全部图层。
cad一键解锁所有图层命令的方法:
步骤一、通过CAD编辑器将要进行 *** 作的CAD图纸文件打开,可以打开的文件格式包含dwg、dwt、dxf等大部分CAD文件。
步骤二、当我们的CAD图纸文件打开后,在“查看器”面板内容,点击选择“图层”工具(或在“编辑器”中选择“图层”工具)。打开CAD图层窗口,在这里我们可以一键对全部图层进行 *** 作。
步骤三、在图层窗口中会显示当前CAD文件的所有图层,图层信息包括状态、名称、打开、冻结、色彩、线型、线宽、绘图、锁定,我们选简穗派择全部图层。
步骤四、在“锁定”中,点击对应图层的锁图标,即可一键解锁CAD全部图层了
8. cad图层的快拦贺捷命令是什么
常见的快捷命令
(一)字母类
1、对象特性
ADC, *ADCENTER(设计中心“Ctrl+2”)
CH, MO *PROPERTIES(修改特性“Ctrl+1”)
MA, *MATCHPROP(属性匹配)
ST, *STYLE(文字样式)
COL, *COLOR(设置颜色)
LA, *LAYER(图层 *** 作)
LT, *LINETYPE(线形)
LTS, *LTSCALE(线形比例)
LW, *LWEIGHT (线宽)
UN, *UNITS(图形单位)
ATT, *ATTDEF(属性定义)
ATE, *ATTEDIT(编辑属性)
BO, *BOUNDARY(边界创建,包括创建闭合多段线和面域)
AL, *ALIGN(对齐)
EXIT, *QUIT(退出)
EXP, *EXPORT(输出其它格式文件)
IMP, *IMPORT(输入文件)
OP,PR *OPTIONS(自定义CAD设置)
PRINT, *PLOT(打印)
PU, *PURGE(清除垃圾)
R, *REDRAW(重新生成)
REN, *RENAME(重命名)
SN, *SNAP(捕捉栅格)
DS, *DSETTINGS(设置极轴追踪)
OS, *OSNAP(设置捕捉模式)
PRE, *PREVIEW(打印预览)
TO, *TOOLBAR(工具栏)
V, *VIEW(命名视图)
AA, *AREA(面积)
DI, *DIST(距离)
LI, *LIST(显示图形数据信息)
2、绘图命令:
PO, *POINT(点)
L, *LINE(直线)
XL, *XLINE(射线)
PL, *PLINE(多段线)
ML, *MLINE(多线)
SPL, *SPLINE(样条曲线)
POL, *POLYGON(正多边形)
REC, *RECTANGLE(矩形)
C, *CIRCLE(圆)
A, *ARC(圆弧)
DO, *DONUT(圆环)
EL, *ELLIPSE(椭圆)
REG, *REGION(面域)
MT, *MTEXT(多行文本)
T, *MTEXT(多行文本)
B, *BLOCK(块定义)
I, *INSERT(插入块)
W, *WBLOCK(定义块文件)
DIV, *DIVIDE(等分)
H, *BHATCH(填充)
3、修改命令:
CO, *COPY(复制)
MI, *MIRROR(镜像)
AR, *ARRAY(阵列)
O, *OFFSET(偏移)
RO, *ROTATE(旋转)
M, *MOVE(移动)
E, DEL键 *ERASE(删除)
X, *EXPLODE(分解)
TR, *TRIM(修剪)
EX, *EXTEND(延伸)
S, *STRETCH(拉伸)
LEN, *LENGTHEN(直线拉长)
SC, *SCALE(比例缩放)
BR, *BREAK(打断)
CHA, *CHAMFER(倒角)
F, *FILLET(倒圆角)
PE, *PEDIT(多段线编辑)
ED, *DDEDIT(修改文本)
4、视窗缩放:
P, *PAN(平移)
Z+空格+空格, *实时缩放
Z, *局部放大
Z+P, *返回上一视图
Z+E, *显示全图
5、尺寸标注:
DLI, *DIMLINEAR(直线标注)
DAL, *DIMALIGNED(对齐标注)
DRA, *DIMRADIUS(半径标注)
DDI, *DIMDIAMETER(直径标注)
DAN, *DIMANGULAR(角度标注)
DCE, *DIMCENTER(中心标注)
DOR, *DIMORDINATE(点标注)
TOL, *TOLERANCE(标注形位公差)
LE, *QLEADER(快速引出标注)
DBA, *DIMBASELINE(基线标注)
DCO, *DIMCONTINUE(连续标注)
D, *DIMSTYLE(标注样式)
DED, *DIMEDIT(编辑标注)
DOV, *DIMOVERRIDE(替换标注系统变量)
(二)常用CTRL快捷键
【CTRL】+1 *PROPERTIES(修改特性)
【CTRL】+2 *ADCENTER(设计中心)
【CTRL】+O *OPEN(打开文件)
【CTRL】+N、M *NEW(新建文件)
【CTRL】+P *PRINT(打印文件)
【CTRL】+S *S***E(保存文件)
【CTRL】+Z *UNDO(放弃)
【CTRL】+X *CUTCLIP(剪切)
【CTRL】+C *COPYCLIP(复制)
【CTRL】+V *PASTECLIP(粘贴)
【CTRL】+B *SNAP(栅格捕捉)
【CTRL】+F *OSNAP(对象捕捉)
【CTRL】+G *GRID(栅格)
【CTRL】+L *ORTHO(正交)
【CTRL】+W *(对象追踪)
【CTRL】+U *(极轴)
(三)常用功能键
【F1】 *HELP(帮助)
【F2】 *(文本窗口)
【F3】 *OSNAP(对象捕捉)
【F7】 *GRIP(栅格)
【F8】 *ORTHO(正交)
9. CAD图层快捷键
CAD里“对象选择过滤器”的作用就是:以对象的类型(如直线、圆及圆弧等)、图层、颜色、线型或线宽等特性作为条件,过滤选择符合设定条件的对象。另外,在使用“对象选择过滤器”时,需要注意以下三点:
1、一般可以先使用CAD的选择过滤器进行选择对象的 *** 作,然后直接通过执行编辑命令,或者在使用编辑命令提示时选择对象,用键盘输入P,即前一次选择来进行响应。
2、在选择过滤的条件中,所谓的颜色和线型,其实不能理解为对象特性,因为“随层”而具有的颜色和线型,而是通过使用COLOUR,LINTYPE等命令而特别指定给对象的颜色和线型。这一点要加以区分。
3、对于已经命名的过滤器,不仅可以使用在原本定义它的图形中,还可引用到其他的图形文件中。而对于条件的选择方式,用户可以依据颜色、线宽、线型等各种筛选条件进行选择即可。
10. cad图层快捷键命令大全表格
1.
在CAD最上方的工具栏点击“格式”,找到并点击“图层”的选项,点击即可显示出“图层管理器”。
2.
输入快捷键“LA”,按下“空格键”或者“回车键”即可d出图层管理器。
3.
在其中能看到各种关于图层的信息,甚至可以更改图层的名称。
4.
总结如下。
1.
在CAD最上方的工具栏点击“格式”,找到并点击“图层”的选项,点击即可显示出“图层管理器”。
2.
输入快捷键“LA”,按下“空格键”或者“回车键”即可d出图层管理器。
3.
在其中能看到各种关于图层的信息,甚至可以更改图层的名称。
4.
总结如下。
1.
在CAD最上方的工具栏点击“格式”,找到并点击“图层”的选项,点击即可显示出“图层管理器”。
2.
输入快捷键“LA”,按下“空格键”或者“回车键”即可d出图层管理器。
3.
在其中能看到各种关于图层的信息,甚至可以更改图层的名称。
4.
总结如下。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)