首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

关于gcc、glibc和binutils模块之间的关系

2、binutils提供了一系列用来创建、管理和维护二进制目标文件的工具程序,如汇编(as)、连接(ld)、静态库归档(ar)、反汇编(objdump)、elf结构分析工具(readelf)、无效调试信息和符号的工具...通常,binutils与gcc是紧密相集成的,没有binutils的话,gcc是不能正常工作的。 3、glibc是gnu发布的libc库,也即c运行库。...注意,在configure前,需要设置ld缺省连接的路径(LIBRARY_PATH=/usr/local/lib:/lib:/usr/lib),否则binutils会configure出错,找不到libc...) (7)make install 三、总结 1、运行时,动态库的装载依赖于ld-linux.so.6的实现,它查找共享库的顺序如下: (1)ld-linux.so.6在可执行的目标文件中被指定,可用readelf...,编译binutils时指定。

2.7K91

Linux 程序编译过程详解

Binutils 一组二进制程序处理工具,包括:addr2line、ar、objcopy、objdump、as、ld、ldd、readelf、size等。...以Hello World为例: 如果使用命令“gcc hello.c -o hello”则会使用动态库进行链接,生成的ELF可执行文件的大小(使用Binutils的size命令查看)和链接的动态库(使用...0x00007fadcdd82000) /lib64/ld-linux-x86-64.so.2 (0x00007fadce14c000) 如果使用命令“gcc -static hello.c -o hello”则会使用静态库进行链接...,生成的ELF可执行文件的大小(使用Binutils的size命令查看)和链接的动态库(使用Binutils的ldd命令查看)如下所示: $ gcc -static hello.c -o hello $...可以使用readelf -S查看其各个section的信息如下: $ readelf -S hello There are 31 section headers, starting at offset

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

    Linux 程序编译过程详解

    Binutils一组二进制程序处理工具,包括:addr2line、ar、objcopy、objdump、as、ld、ldd、readelf、size等。...以Hello World为例:如果使用命令“gcc hello.c -o hello”则会使用动态库进行链接,生成的ELF可执行文件的大小(使用Binutils的size命令查看)和链接的动态库(使用Binutils...0x00007fadcdd82000) /lib64/ld-linux-x86-64.so.2 (0x00007fadce14c000)如果使用命令“gcc -static hello.c -o hello”则会使用静态库进行链接...,生成的ELF可执行文件的大小(使用Binutils的size命令查看)和链接的动态库(使用Binutils的ldd命令查看)如下所示:$ gcc -static hello.c -o hello$ size...可以使用readelf -S查看其各个section的信息如下:$ readelf -S helloThere are 31 section headers, starting at offset 0x19d8

    1.9K30

    Linux 程序编译过程的来龙去脉

    Binutils 一组二进制程序处理工具,包括:addr2line、ar、objcopy、objdump、as、ld、ldd、readelf、size等。...以Hello World为例: 如果使用命令“gcc hello.c -o hello”则会使用动态库进行链接,生成的ELF可执行文件的大小(使用Binutils的size命令查看)和链接的动态库(使用...0x00007fadcdd82000) /lib64/ld-linux-x86-64.so.2 (0x00007fadce14c000) 如果使用命令“gcc -static hello.c -o hello”则会使用静态库进行链接...,生成的ELF可执行文件的大小(使用Binutils的size命令查看)和链接的动态库(使用Binutils的ldd命令查看)如下所示: $ gcc -static hello.c -o hello $...可以使用readelf -S查看其各个section的信息如下: $ readelf -S hello There are 31 section headers, starting at offset

    3K30

    mac 编译问题解决——building for macOS-x86_64 but attempting to link with file built for xxx

    ranlib (GNU Binutils) 2.40 Copyright (C) 2023 Free Software Foundation, Inc....那为什么会有两套工具链混合使用导致出错的问题?...:/usr/local/opt/binutils/bin:/usr/bin:... 所以在搜索可执行文件时,先找到了GNU的ranlib,而这个又与Apple的编译工具链不兼容。导致编译出错。...当一个程序需要链接静态库时,链接器会使用ranlib创建的索引来确定静态库中包含的符号,以便正确地链接程序。 可以看到,ranlib对于编译静态库来说,是必不可少的(与ar -s完全等效)。...其实我不记得在PATH中添加过/usr/local/opt/binutils/bin这个目录,应该是安装某些包后自动更新的。 那这个问题该怎么解决呢?

    77920

    ​在tinycolinux32上装tinycolinux64 kernel和toolchain

    当然它也是难于构建的,它难于被构建是因为它绑定了binutils,kernel,libc这样的东西。...猜这是因为在.config文件中同时开启了32和64支持,32位程序能运行在64位上,且原来的rootfs中的32位binutils和gcc未变。...如果将这两个软件包分别解压到GCC源码树的根目录下,并分别命名为"gmp"和"mpfr" ) 1)首先编译binutils: cd binutils-2.20 && sudo make b && cd...如果在不纯净的tinycolinux上执行a),可能会出现需要tls support error b) sudo make csu/subdir_lib 如果在不纯净的tinycolinux上执行b),会继续出错...其实原因就是找不到共享库,error cant find share libs, ELF64CLASS,我们不能用32位的LDD分析它的依赖关系,但我们可以cd a所在的目录,x86_64-pc-linux-gnu-readelf

    84220

    交叉编译学习笔记(一)——交叉编译和交叉工具链

    http://blog.csdn.net/shenjianxz/article/details/52130111 http://www.crifan.com/files/doc/docbook/binutils_intro.../release/html/binutils_intro.html 一....程序运行时依赖的库文件,或者是某个库所依赖的另外一个库文件) 输出目标: 程序的可执行文件 可被其他可执行文件/库文件调用的库文件 工具:链接器(ld) 这里有一个不得不提的二进制工具集——GNU Binutils...GNU Binutils,即GNU Binary Utilities的简写,是一组二进制工具的集合。...一般用于反汇编) ar:用来操作.a档案文件,如创建、修改、提取内容等 nm:列出目标文件中的符号 objcopy:拷贝并转换文件,可用于不同格式的二进制文件转换 objdump:显示目标文件中的信息 readelf

    5.7K70

    深入浅出GCC编译器

    一、GCC交叉编译工具链 GCC编译工具链包含了GCC编译器在内的一整套工具,主要包含了GCC编译器、Binutils工具集、glibc标准函数库。...Binutils工具集 (1)链接器与汇编器 binutils(bin utility,GUN二进制工具集),GNU binutils是一组二进制工具集。...可以输入 readelf 查看说明及选项参数 readelf -h 显示可执行文件或目标文件的ELF Header的文件头信息(就是ELF文件开始的前52个字节) ③ nm: 查看目标文件中出现的符号...O3:最高的优化级别,它会使用更多的编译时间,并且会增大二进制文件的体积并让他们更消耗内存。...(7)-Wall 显示更多警告信息 当GCC在编译过程中检查出错误的话,它就会中止编译,并报错。

    53310

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

    如何使用自定义链接脚本实现自定义段的功能 在ld链接过程中使用-T参数可以指定链接脚本,通过ld -verbose可以查看默认的链接脚本,原文太长,这里简单截取了一部分: $ ld -verbose GNU ld (GNU Binutils.../test hello 上面的tinytext一行是指将.text段、.data段、.rodata段的内容都合并到tinytext段中,使用readelf查看段的信息。...~/test$ readelf -S test ~/test$ There are 6 section headers, starting at offset 0x482a0: Section Headers...每个目标文件都有什么符号 objdump -r 显示文件的重定位入口,重定位表 objdump -x 显示所有可用的头信息,等于-a -f -h -r -t objdump -H 帮助 关于分析ELF文件格式: readelf...-h 列出文件头 readelf -S 列出每个段 readelf -r 列出重定位表 readelf -d 列出动态段 关于查看目标文件符号信息: nm -a 显示所有的符号 nm -D 显示动态符号

    1.3K30

    Android JNI Crash定位步骤

    如何准确判断so有没有被strip请参照文章下面提到的readelf工具。...abi目录 ------------------------分隔符------------------------ 其他工具补充 toolchain下的: arm-linux-androideabi-readelf...被strip的so的 readelf结果里“section headers”的个数会比未strip后的少,所以可以根据readelf来判断so是否是真的被strip了 命令格式: arm-linux-androideabi-readelf...命令格式: arm-linux-androideabi-readelf -a xx.so > fun.txt # 注意:仍需要使用未strip之前的so文件, 上面的命令会把结果写入fun.txt arm-linux-androideabi-objdump...比如第三方库的兼容性问题,权限问题 #define SIGSYS 31 // bad argument to system call 非法的系统调用 #define SIGBUS 7 // 非法地址,包括内存地址对齐出错

    2.8K10
    领券