本文目录一览

1,linux系统C语言的nm是什么意思

图在哪里
就是搜索动态链接库 库函数的

linux系统C语言的nm是什么意思

2,它们的调用方法各是什么请说出nm和ldd两个命令的作

1)、在Red Hat Linux中函数库可以分为3种类型:静态函数库、共享函数库和动态加载函数库。 静态函数库在应用程序编译时就把函数的执行代码加入到应用程序中。 共享函数库中的函数当一个可执行程序启动时被加载。 动态加载函数库可以在程序运行的任何阶段加载函数。 2)、使用nm和ldd命令可以获得关于库函数的信息。 nm命令可以列出一个函数库文件中的符号表,它对静态的库函数和共享的库函数都能起作用。 ldd命令可以列出一个程序正常运行所需要的共享库。 3)、库函数缺省存放在/lib和/usr/lib中,以及动态库配置文件内所列的目录中。 如果库函数没有在这些目录下,可以在中加入所须目录,后运行ldconfig命令,使之生效。或设置环境变量LD_LIBRARY_PATH或LD_PRELOAD加入库函数所存放的目录。 还有不会的请参考《linux就该这么学》,针对各种linux疑难杂症,帮助linux学习者。

它们的调用方法各是什么请说出nm和ldd两个命令的作

3,航空公司定位AVH什么意思SD什么意思NM1什么意思CT什么意

AVH是查询指令,SD是订位指令,NM是姓名组,CT是联系组,TKTL是出票时限。
avh 航空公司或公司 - 国家aviser, s.a. - 西班牙 呼号aviser sd:苏丹航空公司 sudan airways 所属国 家:苏丹 nm1:海航集团海南航空股份有限公司ct:索菲亚航空公司(ct)tktl:留票时限

航空公司定位AVH什么意思SD什么意思NM1什么意思CT什么意

4,nm指的是什么 nm的解释

1、nm(纳米简写)1纳米=1毫微米(即十亿分之一米),就是约为10个原子的长度。假设一根头发的直径为0.05毫米,把它径向平均剖成5万根,每根的厚度即约为1纳米。 2、nm(公制纱支)公制纱支的意思。纺织品经纬纱粗细的单位统称;单位为s。另外英制纱支为:Ne。 3、nm(海里简写)海里是国际度量单位。1海里=1.852公里(千米) (中国标准)。标准符号n mile。《中华人民共和国法定计量单位》所用的符号是n mile。它等于地球椭圆子午线上纬度1分(一度等于六十分,一圆周为360度)所对应的弧长。 4、nm(linux命令)nm命令主要是用来列出某些文件中的符号。linux中,nm用来列出目标文件的符号清单。 5、nm(耐磨简写)耐磨材料是一大类具有特殊电、磁、光、声、热、力、化学以及生物功能的新型材料,是信息技术、生物技术、能源技术等高技术领域和国防建设的重要基础材料,同时也对改造某些传统产业,如农业、化工、建材等起着重要作用。

5,如何查看库文件提供了哪些调用

可以用nm命令自己查看库文件提供了哪些调用。比如我们用下面的nm命令查看libz.so库文件提供哪些调用:如果把example.c.gz、minigzip.c.gz两个例子程序完全弄懂了,你就肯定会自己写程序进行压缩和解压缩工作了。查看库文件提供了哪些调用如果我们不看上面的软件包信息中提供的源代码例子,也可以用nm命令自己查看库文件提供了哪些调用。
请查看java jni开发以及android ndk使用方法。。。

6,mac下nm命令详解

从Xcode8开始,苹果在mac上nm工具使用的就是llvm-nm工具( llvm-nm工具用来列出llvm字节码文件,目标文件以及归档文件中的目标中的符号名称 )。对大部分nm工具的命令选项来说,他们都有相同的可选项;但-f,-s和-L这几个选项差别较大。本文主要介绍了nm工具的各种常使用的选项的含义。 nm主要用于展示符号文件中的各种符号的名称列表。某些情况下,如果一个文件使用了strip功能也就是 -T 剖离了符号,这种情况下,使用 nm 和 dyld 结果会不太一样,这种情况需要使用 dyldinfo 来查看文件. 如果输入的文件是打包过的,使用nm会列举各个文件的详情。输入的文件可以是标准的libx.a(x.o)文件,会列举.a和.o文件的符号信息。 默认情况下,每个符号名的值都先于符号名出现。当使用 -m 选项的是,值后面会跟上如下字母,代表各个符号的类型:U(未定义的),A(绝对的),T(Text Section段的符号),D(Data Section的符号),B(bss Section的符号),C(一般符号),S(除了上面几种类型的符号外的符号),或者I(直接符号)。如果符号是本文件有的(非外部引入的),那么type就是小写的。 如果一个符号是Objective-C方法名称,符号名称就会像这样 +-[Class_name(category_name) method:name:], 显示,+号代表类方法,-号代表示例方法 (category_name) 代表这是一个类别. 默认情况下,符号是按字母表顺序排序输出的。

7,dotantnmnb分别是啥命令

答案和LS的差不多nt: no top 禁止上路刷兵nm: no middle 禁止中路刷兵nb: no bottom 禁止下路刷兵
分别是上路、中路、下路不出兵再看看别人怎么说的。
nt: no top 禁止上路刷兵nm: no middle 禁止中路刷兵nb: no bottom 禁止下路刷兵

8,linux系统C语言的nm是什么意思

不是C语言吧?是系统命令。用来列举object文件(比如编译出的a.out)的symbols.用法是:nm [-a|--debug-syms] [-g|--extern-only] [-B] [-C|--demangle[=style]] [-D|--dynamic] [-S|--print-size] [-s|--print-armap] [-A|-o|--print-file-name] [-n|-v|--numeric-sort] [-p|--no-sort] [-r|--reverse-sort] [--size-sort] [-u|--undefined-only] [-t radix|--radix=radix] [-P|--portability] [--target=bfdname] [-fformat|--format=format] [--defined-only] [-l|--line-numbers] [--no-demangle] [-V|--version] [-X 32_64] [--help] [objfile...] 具体而言,nm用来列出目标文件的符号清单。如果没有为nm命令指出目标文件,则nm假定目标文件是a.out。下面列出该命令的任选项,大部分支持“-”开头的短格式和“-“开头的长格式。 -A、-o或--print-file-name:在找到的各个符号的名字前加上文件名,而不是在此文件的所有符号前只出现文件名一次。 例如nmlibtest.a的输出如下: CPThread.o: 00000068TMain__8CPThreadPv 00000038TStart__8CPThread 00000014T_._8CPThread 00000000T__8CPThread 00000000?__FRAME_BEGIN__ ………………………………… 则nm-A的输出如下: libtest.a:CPThread.o:00000068TMain__8CPThreadPv libtest.a:CPThread.o:00000038TStart__8CPThread libtest.a:CPThread.o:00000014T_._8CPThread libtest.a:CPThread.o:00000000T__8CPThread libtest.a:CPThread.o:00000000?__FRAME_BEGIN__ ………………………………………………………….. -a或--debug-syms:显示调试符号。 -B:等同于--format=bsd,用来兼容MIPS的nm。 -C或--demangle:将低级符号名解码(demangle)成用户级名字。这样可以使得C 函数名具有可读性。 -D或--dynamic:显示动态符号。该任选项仅对于动态目标(例如特定类型的共享库)有意义。 -fformat:使用format格式输出。format可以选取bsd、sysv或posix,该选项在GNU的nm中有用。默认为bsd。 -g或--extern-only:仅显示外部符号。 -n、-v或--numeric-sort:按符号对应地址的顺序排序,而非按符号名的字符顺序。 -p或--no-sort:按目标文件中遇到的符号顺序显示,不排序。 -P或--portability:使用POSIX.2标准输出格式代替默认的输出格式。等同于使用任选项-fposix。 -s或--print-armap:当列出库中成员的符号时,包含索引。索引的内容包含:哪些模块包含哪些名字的映射。-r或--reverse-sort:反转排序的顺序(例如,升序变为降序)。 --size-sort:按大小排列符号顺序。该大小是按照一个符号的值与它下一个符号的值进行计算的。 -tradix或--radix=radix:使用radix进制显示符号值。radix只能为“d”表示十进制、“o”表示八进制或“x”表示十六进制。 --target=bfdname:指定一个目标代码的格式,而非使用系统的默认格式。 -u或--undefined-only:仅显示没有定义的符号(那些外部符号)。 -l或--line-numbers:对每个符号,使用调试信息来试图找到文件名和行号。对于已定义的符号,查找符号地址的行号。对于未定义符号,查找指向符号重定位入口的行号。如果可以找到行号信息,显示在符号信息之后。 -V或--version:显示nm的版本号。 --help:显示nm的任选项。ar cs libmy.a//创建一个库 ar rs libmy.a 1.o//增加一个模块 ar t libmy.a//显示库里的模块 ar d libmy.a 1.o//删除一个模块

9,nm命令看到动态库中的内容符号是什么意思

用的options:-A 在每个符号信息的前面打印所在对象文件名称;-C 输出demangle过了的符号名称;-D 打印动态符号;-l 使用对象文件中的调试信息打印出所在源文件及行号;-n 按照地址/符号值来排序;-u 打印出那些未定义的符号;常见的符号类型:A 该符号的值在今后的链接中将不再改变;B 该符号放在BSS段中,通常是那些未初始化的全局变量;D 该符号放在普通的数据段中,通常是那些已经初始化的全局变量;T 该符号放在代码段中,通常是那些全局非静态函数;U 该符号未定义过,需要自其他对象文件中链接进来;W 未明确指定的弱链接符号;同链接的其他对象文件中有它的定义就用上,否则就用一个系统特别指定的默认值。注意几点:-C 总是适用于c++编译出来的对象文件。还记得c++中有重载么?为了区分重载函数,c++编译器会将函数返回值/参数等信息附加到函数名称中去形成一个mangle过的符号,那用这个选项列出符号的时候,做一个逆操作,输出那些原始的、我们可理解的符号名称。使用 -l 时,必须保证你的对象文件中带有符号调式信息,这一般要求你在编译的时候指定一个 -g 选项,见 Linux:Gcc。使用nm前,最好先用Linux:File查看对象文件所属处理器架构,然后再用相应交叉版本的nm工具。
可执行文件也可以看。如果可执行文件被strip过,可能没有符号:$ nm -a /usr/bin/testnm: /usr/bin/test: no symbols试试用-d看动态加载的符号:$ nm -d /usr/bin/test... u __ctype_b_loc u __ctype_get_mb_cur_max u __cxa_atexit u __errno_location u __fpending u __fprintf_chk w __gmon_start__ u __libc_start_main u __lxstat64 u __overflow u __printf_chk...略

10,linux下C 质数小程序 段错误

1. 段错误是什么 一句话来说,段错误是指访问的内存超出了系统给这个程序所设定的内存空间,例如访问了不存在的内存地址、访问了系统保护的内存地址、访问了只读的内存地址等等情况。这里贴一个对于“段错误”的准确定义(参考answers.com): a segmentation fault (often shortened to segfault) is a particular error condition that can occur during the operation of computer software. in short, a segmentation fault occurs when a program attempts to access a memory location that it is not allowed to access, or attempts to access a memory location in a way that is not allowed (e.g., attempts to write to a read-only location, or to overwrite part of the operating system). systems based on processors like the motorola 68000 tend to refer to these events as address or bus errors. segmentation is one approach to memory management and protection in the operating system. it has been superseded by paging for most purposes, but much of the terminology of segmentation is still used, "segmentation fault" being an example. some operating systems still have segmentation at some logical level although paging is used as the main memory management policy. on unix-like operating systems, a process that accesses invalid memory receives the sigsegv signal. on microsoft windows, a process that accesses invalid memory receives the status_access_violation exception. 2. 段错误产生的原因 2.1 访问不存在的内存地址 #include #include void main() { int *ptr = null; *ptr = 0; } 2.2 访问系统保护的内存地址 #include #include void main() { int *ptr = (int *)0; *ptr = 100; } 2.3 访问只读的内存地址 #include #include #include void main() { char *ptr = "test"; strcpy(ptr, "test"); } 2.4 栈溢出 #include #include void main() { main(); } 等等其他原因。 3. 段错误信息的获取 程序发生段错误时,提示信息很少,下面有几种查看段错误的发生信息的途径。 3.1 dmesg dmesg可以在应用程序crash掉时,显示内核中保存的相关信息。如下所示,通过dmesg命令可以查看发生段错误的程序名称、引起段错误发生的内存地址、指令指针地址、堆栈指针地址、错误代码、错误原因等。以程序2.3为例: panfeng@ubuntu:~/segfault$ dmesg [ 2329.479037] segfault3[2700]: segfault at 80484e0 ip 00d2906a sp bfbbec3c error 7 in libc-2.10.1.so[cb4000+13e000] 3.2 -g 使用gcc编译程序的源码时,加上-g参数,这样可以使得生成的二进制文件中加入可以用于gdb调试的有用信息。以程序2.3为例: panfeng@ubuntu:~/segfault$ gcc -g -o segfault3 segfault3.c 3.3 nm 使用nm命令列出二进制文件中的符号表,包括符号地址、符号类型、符号名等,这样可以帮助定位在哪里发生了段错误。以程序2.3为例: panfeng@ubuntu:~/segfault$ nm segfault3 08049f20 d _dynamic 08049ff4 d _global_offset_table_ 080484dc r _io_stdin_used w _jv_registerclasses 08049f10 d __ctor_end__ 08049f0c d __ctor_list__ 08049f18 d __dtor_end__ 08049f14 d __dtor_list__ 080484ec r __frame_end__ 08049f1c d __jcr_end__ 08049f1c d __jcr_list__ 0804a014 a __bss_start 0804a00c d __data_start 08048490 t __do_global_ctors_aux 08048360 t __do_global_dtors_aux 0804a010 d __dso_handle w __gmon_start__ 0804848a t __i686.get_pc_thunk.bx 08049f0c d __init_array_end 08049f0c d __init_array_start 08048420 t __libc_csu_fini 08048430 t __libc_csu_init u __libc_start_main@@glibc_2.0 0804a014 a _edata 0804a01c a _end 080484bc t _fini 080484d8 r _fp_hw 080482bc t _init 08048330 t _start 0804a014 b completed.6990 0804a00c w data_start 0804a018 b dtor_idx.6992 080483c0 t frame_dummy 080483e4 t main u memcpy@@glibc_2.0 3.4 ldd 使用ldd命令查看二进制程序的共享链接库依赖,包括库的名称、起始地址,这样可以确定段错误到底是发生在了自己的程序中还是依赖的共享库中。以程序2.3为例: panfeng@ubuntu:~/segfault$ ldd ./segfault3 linux-gate.so.1 => (0x00e08000) libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0x00675000) /lib/ld-linux.so.2 (0x00482000)
重新编译一次试试。另外, 应该是for(i = 0;i if(!(found =(trial % *(primes+i)))) break; if(found) *(primes+count) = trial; ++count; }还有,可以用数组下标访问的,没必要老是*(a+i)

文章TAG:nm命令  linux系统C语言的nm是什么意思  
下一篇