展开

关键词

Linux(63)——nm

1.命简介 nm是GNU Binutils二进制工具集的一员,用于显示目标文件中的符号。如果没有为nm出目标文件,则nm假定目标文件是a.out。 nm显示的符号类型。 |--demangle:将低级符号名解码(demangle)成用户级名字,比如去除编译时添加的前置划线,这样可以使得C++函数名具有可读性。 对于未定义符号,查找向符号重定位入口的行号。 版本的nm兼容,选项-X将被忽略。 合成符号是链接器为各种目的创建的特殊符号,默认情况不会显示它们,因为它们不是二进制文件源代码的一部分--target=:定系统默认格式以外的目标文件格式 4.常用示例首先给出后面大部分示例所基于的源代码以及编译

1.7K00

curl交叉编译方法

然后全文搜索一gcc, 全部替换成arm-linux-gnueabihf-gcc 执行make 命编译执行make install命安装生成的头文件、库都在hometesthttps_frameworklibszlib 目录二、编译openssl:(版本openssl-OpenSSL_1_0_2g)执行面的命生成makefile: .Configure linux-elf-arm linux:arm-linux-gnueabihf-gcc --prefix=hometesthttps_frameworklibsopenssl x86用面的命 .Configure linux-x86_64 --prefix=hometesthttps_frameworklibsopenssl 在makefile中做如修改: RANLIB= usrbinranlib --> RANLIB= arm-linux-gnueabihf-ranlib NM= nm --> NM= arm-linux-gnueabihf-nm =0 其中 –enable-shared=0 说明只编译静态库 –with-ssl= 定openssl的安装路径 –with-zlib= 定zlib的安装路径 configure执行完毕后输出配置信息

2K50
  • 广告
    关闭

    90+款云产品免费体验

    提供包括云服务器,云数据库在内的90+款云计算产品。打造一站式的云产品试用服务,助力开发者和企业零门槛上云。

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    基于RHEL8CentOS8的网络IP配置详解

    ➡ 事先声明:本文提及的所有内容,仅适用rhel8centos8,因为不同linux系统的NetworkManager行为存在部分差异。 默认情况,这2个服务都有开启,但许多人都会将NM禁用掉。 在rhel8上,已废弃network.service,因此只能通过NM进行网络配置,包括动态ip和静态ip。 参数) ▷ 一统江湖:RedHat系、Suse系、DebianUbuntu系,均支持 ▷ 大势所趋:一个大版本的rhel只能通过NM管理网络 nmcli使用方法 nmcli使用方法非常类似linux ip命、cisco交换机命,并且支持tab补全(详见本文最后的Tips),也可在命最后通过-h、--help、help查看帮助。 所以该命用途不大。

    5.2K00

    Ubuntu上搭建arm虚拟运行环境

    -7 arm-linux-gnueabihf-objdumparm-linux-gnueabihf-gcc-nm arm-linux-gnueabihf-ranlibarm-linux-gnueabihf-gcc-nm .3 libld-linux-armhf.so.3编写测试代码main.c:#include int main(){ printf(helloworldn); return 0;}面的命,首先编译main.c 生成arm平台的可执行文件a.out,然后通过file命可以看到,a.out为arm平台的elf可执行文件:helloworld@ubuntu:~$ arm-linux-gnueabihf-gcc arm-linux-gnueabihf-gcc --static -g main.c 通过面的命启动可执行程序a.out, 选项-g明了gdb的监听端口,这里选择的是1234。 该运行后,当前窗口会被阻塞住。

    1.9K11

    交叉编译环境的安装

    想编译出在其它平台上可执行的程序,就需要使用不同的编译器,因为不同的编译器有不同的集等。关于交叉编译器有很多,我们本次采用linaro公司提供的一个交叉编译工具。 、载好之后进行解压:tar -xvf gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi.tar.xz2、把解压后的整个目录拷贝到自己想要存放的地方 我就放在了我统一管理的地方 ++filt arm-linux-gnueabi-gcc-4.9.4 arm-linux-gnueabi-gdb arm-linux-gnueabi-nm arm-linux-gnueabi-sizezh -4.9.4-2017.01-x86_64_arm-linux-gnueabibin$4、配置环境变量 如果想直接像系统自带的gcc命这样随处可以执行的话,就需要配置环境变量。 -4.9.4 arm-linux-gnueabihf-as arm-linux-gnueabihf-gcc-nm arm-linux-gnueabihf-nm arm-linux-gnueabi-nmzh

    12710

    hadoop3.0 Yarn支持网络资源:network原理设计文档说明【中文】

    HTB4(分级牌缓冲区)classful qdisc用于实现基于类id的流量整形5。配置选项 为了执行一些配置项将在NM上可用。 在这种情况,默认值或定的配置参数是无效的,网管将记录一个错误,并启动失败。 NM启动 一旦配置被验证,在NM启动期间执行以操作:1.安装net_clcgroup子系统2.对于正在使用的网络接口,应用以tc操作:a.添加一个HTB队列规则(qdisc) 纯文本查看 复制代码? 有两个潜在的解决方案(在Linux上)1.在一个CGroup(和一个关联的tc规则)运行一个新的NM 配置参数控制NM可用的带宽量。 在MapReduce的情况,将添加作业配置选项来设置map和reduce任务所需的网络带宽。 在分布式shell的情况,将添加命行选项以允许用户定网络带宽。

    56350

    程序一定要从main函数开始运行吗?

    符号解析与重定位:使用第一步收集到的所有信息,读取输入文件中段的数据及重定位信息,进行符号解析和重定位,调整代码中的地址,将每个段中需要重定位的和数据进行“修补”,使他们都向正确的位置。 ? ,如: ~test$ gcc -c -fno-builtin testlink.cc -o test.o~test$ nm test.o U _GLOBAL_OFFSET_TABLE_0000000000000000 如何定程序入口 在ld链接过程中使用-e参数可以定程序入口,由于一段简短的printf函数其实都依赖了好多个链接库,我们也不太方便使用链接脚本将目标文件与所有这些依赖库进行链接,所以使用面这段内嵌汇编的程序来打印一段字符串 void exit() { asm(movl $42,%ebx nt movl $1,%eax nt int $0x80 nt);} void nomain() { print(); exit();}使用如生成目标文件 : gcc -c -fno-builtin test.cc 看输出的test.o的符号: ~test$ nm -a test.o0000000000000000 b .bss0000000000000000

    27130

    详解Centos8 配置静态IP的实现

    安装centos 8之后,重启启动网络时,会出现以报错报错信息如: Failed to start network.service: Unit network.service not found. 因此只能通过其它方法进行网络配置,包括NM工具集。换言之,在rhel8上,必须开启NM,否则无法使用网络。 nmcli使用方法 nmcli使用方法非常类似linux ip命、cisco交换机命,并且支持tab补全(详见本文最后的Tips),也可在命最后通过-h、–help、help查看帮助。 nmcli d disconnect ens32 让NM暂时不管理定网卡,此操作不会变更实际网卡的link状态,只会使对应的connection变成非活跃。若重启系统则又会自动connect。 所以该命用途不大。

    1.3K31

    Linux执行bcp

    INSPECTOR_LOG.dbo.Table_NewVersionAvgDelay out t001.txt -c -U sa -P hundsun@1 -S 192.168.11.11bash: bcp: 未找到命. ..Linux不支持pcb,需要安装相应的工具包,安装教程如 我的系统是CentOs7,按照Red Hat版本进行安装 1.进入超级用户模式sudo su2.载配置文件curl https:packages.microsoft.comconfigrhel7prod.repo 为了能够在不登录会话或者是交互模式可以执行sqlcmdbcp,需要在~.bashrc文件中修改路径echo export PATH=$PATH:optmssql-toolsbin >> ~.bashrcsource ~.bashrc再次执行发现可以使用

    42550

    Linux常用

    服务器部署会经常用到linux,很多时候都是用的时候上网查一,然后用完过不了多久就忘记了,因此本文记录一些自己常用的linux,以作备忘。并不断添加。 c、:q ->退出 d、:wq ->保存并退出 e、数字+- ->加或者减多少行 f、ctrl+fd ->后翻页 g、ctrl+bu ->前翻页 h、ctrl+nm ->翻行 i、ctrl+ey LD_LIBRARY_PATH=`pwd` b、查看动态库加载目录:#echo $LD_LIBRARY_PATH c、查询某个档案的动态函式库:#ldd execname d、查看某个库的符号表:#nm -D execname 9、gdb相关 a、ctrl+c:程序暂停 b、c:继续运行 c、bt:打印当前线程的当前的调用栈 d、thread apply all bt full:打印出所有线程的当前的调用栈 j、down:堆栈移 k、step:单步执行 l、attach pid:附加到进程进行调试 m、break file:linenumber:在定文件定行加断点 n、delete number:删除定断点

    67830

    Android JNI Crash定位步骤

    格式:arm-linux-androideabi-readelf -a xx.so > fun.txt # 注意:仍需要使用未strip之前的so文件, 上面的命会把结果写入fun.txtarm-linux-androideabi-objdump 或aarch64-linux-android-objdump -dx xx.so > stacktrace.txtarm-linux-androideabi-nm 可以查看静态库中的符号,比如查看所有方法的声明 如果在用静态库编译so动态库的过程中碰到undefined reference类型的错误, 或者duplicated reference, 可以使用这条将对应静态库的所有方法都导出来, 然后看一是否有某方法命格式 :arm-linux-androideabi-nm xx.a > symbol.txt 常用信号量的含义:#define SIGABRT 6 abort() 调用abort函数生成的信号,表示程序运行异常被中止 0x0一般是空针错误)#define SIGILL 4 Illegal instruction 执行了非法,比如第三方库的兼容性问题,权限问题#define SIGSYS 31 bad argument

    1.4K10

    linux常用命--开发调试篇

    前言Linux常用命中有一些命可以在开发或调试过程中起到很好的帮助作用,有些可以帮助了解或优化我们的程序,有些可以帮我们定位疑难问题。本文将简单介绍一这些命。 这时候,我们可以使用nm来查看。 例如,查看前面所提到的elf文件有没有test函数,可以用命nm cmdTest|grep test000000000040052d T test #打印结果 按照地址顺序列出符号信息:nm -n 我们可以利用前面介绍的nm获取到函数test的地址,然后使用面的方式反汇编:objdump -d cmdTest --start-address=0x40052d --stop-address=0x400540 ##反汇编定地址区间 端口占用情况查看--netstat我们可能常常会遇到进程第一次启动后,再次启动会出现端口绑定失败的问题,我们可以通过netstat命查看端口占用情况:netstat -anp

    61330

    Linux动态链接库加载路径及搜索路径问题

    可以通过修改配置文件etcld.so.conf 增删路径(修改后需要运行ldconfig命); 4、默认的 lib; 5、默认的 usrlib与动态链接库相关命(1)ld 是gcc的链接程序。 (4)nm用来查看.so库中的函数名字,标记是T的就是动态库里面生成的名字。 如:nm liblibc*.soLinux 动态链接库搜索路径问题Linux动态链接库的搜索路径按优先级排序为:1.编译目标代码时定的动态库搜索路径;在编译时通过gcc 的参数”-Wl,-rpath 2.环境变量LD_LIBRARY_PATH定的动态库搜索路径;3.配置文件etcld.so.conf中定的动态库搜索路径;etcld.so.conf的第一行有个引用命:include ld.so.conf.d 总结以上所述是小编给大家介绍的Linux动态链接库加载路径及搜索路径问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对ZaLou.Cn网站的支持!

    2K63

    hadoop入门:第六章YARN文档概述

    文档简介YARN 命被binyarn脚本调用。 11.NodeManager 重启 文档简介本文给出了nodemanager概述(nm)重启,一个功能,启用NodeManager,重启不会丢失激活的运行在节点的containers。 在高水平,NM 存储任何需要的状态在本地状态存储,因为它处理容器管理需求。当NM 重启,它首先恢复加载各个子系统状态和然后让这些子系统执行恢复使用加载状态。 用户可以定Docker 镜像,他们想要他们的Yarn容器。这些容器提供定制的软件环境,软件环境中用户代码运行,隔离NodeManager软件环境。 安全容器执行在job用户凭据。操作系统强制访问容器的限制。容器必须运行使用提交应用程序。 安全的容器只在有安全的Yarn的背景工作。

    47560

    Linux 上分析二进制文件的 10 种方法

    该编译器生成与源代码等效的机器语言,然后可由 CPU 执行以执行给定的任务。这种机器语言代码可以通过称为汇编语言的助记符来解释。 汇编语言是一组,可帮助您了解程序正在执行并最终在 CPU 上执行的操作。objdump 实用程序读取二进制或可执行文件并将汇编语言转储到屏幕上。 +++ exited with 0 +++$nm它的作用:列出目标文件中的符号。如果您使用的是未剥离的二进制文件,则 nm 命将为您提供在编译期间嵌入二进制文件中的有价值的信息。  分析这些路径的唯一方法是在运行时通过能够在任何给定位置停止或暂停程序并能够分析信息然后进一步向移动。这就是调试器出现的地方,在 Linux 上,  gdb 是事实上的调试器。 所有进一步的命都将在此gdb 命提示符运行, 直到您退出。我们将使用我们之前编译的“hello”程序并使用 gdb 来查看它是如何工作的。

    9100

    ffmpeg编译

    环境 云主机 Centos 7 x86_64 bbr系统ffmpeg-3.0.11库android-ndk-r13bndk安装载 wget https:dl.google.comandroidrepositoryandroid-ndk-r13b-linux-x86 _64.zip 解压 unzip android-ndk-r13b-linux-x86_64.zip ndk个版本载地址选择:https:blog.csdn.netshuzfanarticledetails526905542 --cc=$TOOLCHAINbinarm-linux-androideabi-gcc --nm=$TOOLCHAINbinarm-linux-androideabi-nm --enable-shared --cc=$TOOLCHAINbinarm-linux-androideabi-gcc --nm=$TOOLCHAINbinarm-linux-androideabi-nm --enable-static 通过 .configure --help命查看怎么设置,通过打开configure文件查看所对应的库之间的依赖等。

    37060

    SSL&TLS Tips

    1,不过当然我也在2上花了一点时间,复习了一基础知识,在此记录来。 我印象里面openssl还只有1.x版本才对;我在ubuntu16.04查看这个so文件来源;1 2 ~ locate libssl3.so usrlibx86_64-linux-gnulibssl3 .so nm看一:1 2 3 ~ nm usrlibx86_64-linux-gnulibssl3.so nm: usrlibx86_64-linux-gnulibssl3.so: no symbols -64.so.2 (0x00007faf3d21d000) 嗯,找到了一个有意思的依赖:libnss3.so再用命dpkg看一1 2 ~ dpkg -S usrlibx86_64-linux-gnulibnss3 .so libnss3:amd64: usrlibx86_64-linux-gnulibnss3.so 基本上确定是libnss3这个库引入的libssl3.so了,最后再用dpkg确认一:1 2 3

    74420

    如何优雅的调试段错误

    ,这是出错时寄存器  ip 向的位置,而末尾的 7f93d9674000 是进程启动后 libc-2.27.so  在内存中的动态位置(同一个程序多次启动后起始位置不一样,为了防止黑客猜测代码区位置 big).hex())0005b3cc 使用 nm 可以看到目标文件里的函数列表,我们先尝试一(如果函数名不可读,可用 c++filt 命尝试转换)。 $ nm libx86_64-linux-gnulibc.so.6nm: libx86_64-linux-gnulibc.so.6: no symbols 发现目标文件并没有符号,那么再尝试使用 objdump 命来查看函数列表,因为得到的 0005b3cc 不一定是某个函数的首地址,所以我们可以用前缀 5b3  进行一过滤。 0x5b5b0 0x000000000005b3da : c7 87 c0 00 00 00 ff ff ff ff movl $0xffffffff,0xc0(%rdi) 这次可以看出5b3cc 这条大概在

    1.6K41

    在RHEL CentOS 8中创建网桥的3种方法

    RHEL(Red Hat Enterprise Linux)和CentOS 8等Linux操作系统支持基于软件的网桥的实现,以模拟硬件桥。网桥的功能类似于网络交换机。 本南介绍了可以在RHEL CentOS 8中设置网桥多种方法,并使用它在Oracle VirtualBox和KVM以桥接模式设置虚拟网络,以及将虚拟机连接到与主机相同的网络。 要启动它,请以root用户身份在命行中运行nm-connection-editor命,或从系统菜单中将其打开。 #nm-connection-editor打开后,单击加号以添加新连接,如以屏幕截图中显示。?在弹出窗口中,从拉列表中选择连接类型,这种情况为网桥,然后单击创建。? 在本南中,我们展示了如何在RHEL CentOS 8中设置网桥,以及如何在Oracle VirtualBox和KVM将其用于将VM连接到主机的同一网络。——更多精彩?——

    2.2K20

    思科模拟器GNS3将路由器变成交换机的方法

    GNS3是一款具有图形化界面可以运行在多平台(包括Windows, Linux, and MacOS等)的网络虚拟软件。 面的方法可以将思科模拟器的路由器变成交换机这样方便练习交换机配置第一步:将路由器名字改为 SW?右键点击改设备名称,改完如图? 第三步:在配置里面的添加节点插槽里面选择NM-16ESW;? 第四步:最后在命框输入no ip routing 关闭路由功能,这样就彻底变成交换机了;SW#configure terminalEnter configuration commands, one per ❝特别注意NM-16ESW板块添加到哪个类型的接口,哪个类型的接口才会有交换机功能。

    65320

    相关产品

    • 人工智能

      人工智能

      提供全球领先的人脸识别、文字识别、图像识别、语音技术、NLP、人工智能服务平台等多项人工智能技术。

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭

      扫码关注云+社区

      领取腾讯云代金券