首页 > 其他分享 >交叉编译工具链toolchain bin文件作用 gcc g++ ld ar as nm strip objdump

交叉编译工具链toolchain bin文件作用 gcc g++ ld ar as nm strip objdump

时间:2024-07-31 17:50:49浏览次数:19  
标签:bin 文件 gcc xxxx export linux toolchain arm

前言全局说明

交叉编译工具链toolchain bin文件作用 gcc g++ ld ar as nm strip objdump


一、说明


二、bin 文件功能

arm-xxxx-linux-gcc		#GNU的C语言编译器
arm-xxxx-linux-g++		#GNU的C++语言编译器
arm-xxxx-linux-cpp		#GNU的C的预编译器
arm-xxxx-linux-gcov		#gcc 的辅助测试工具,用来分析和优化程序
arm-xxxx-linux-addr2line	#将你要找的地址转成文件和行号,它要使用 debug 信息
arm-xxxx-linux-ar		#产生、修改和解开一个存档文件
arm-xxxx-linux-asv		#GNU的汇编器
arm-xxxx-linux-c++filt		#C++ 和 Java 中有一种重载函数,所用的重载函数最后会被编译转化成汇编的标,c++filt 就是实现这种反向的转化,根据标号得到函数名
arm-xxxx-linux-gprof		#GNU汇编器预编译器
arm-xxxx-linux-ld		#GNU的连接器
arm-xxxx-linux-nm		#列出目标文件的符号和对应的地址
arm-xxxx-linux-objcopy		#将某种格式的目标文件转化成另外格式的目标文件
arm-xxxx-linux-objdump		#显示目标文件的信息
arm-xxxx-linux-ranlib		#为一个存档文件产生一个索引,并将这个索引存入存档文件中
arm-xxxx-linux-readelf		#显示 elf 格式的目标文件的信息
arm-xxxx-linux-size		#显示目标文件各个节的大小和目标文件的大小
arm-xxxx-linux-strings		#打印出目标文件中可以打印的字符串,有个默认的长度,为4
arm-xxxx-linux-strip		#剥掉目标文件的所有的符号信息

三、环境变量

3.1 include .h头文件指定

export CINCS="${CINCS} /toolchain/include"
export CCINCS="${CCINCS} /toolchain/include"
export CXXINCS="${CCINCS}"
export CPPINCS="${CCINCS}"

3.2 lib库 so 路径指定

export CCLIBS="${CCLIBS} /toolchain/lib"
export CXXLIBS="${CCLIBS}"
export CPPLIBS="${CCLIBS}"

3.3 LDFLAGS 链接文件 so 路径指定

export LDFLAGS="-L/toolchain/lib -Wl,-rpath-link-Wl=/work/crossbuild/X/lib"

注意:路径用空格分割,不要用冒号

3.4 LD_LIBRARY_PATH 指定动态库搜索路径

export LD_LIBRARY_PATH="/toolchain/lib:${LD_LIBRARY_PATH}"

当通过该环境变量指定多个动态库搜索路径时,路径之间用冒号":"分隔。
不过LD_LIBRARY_PATH的设定作用是全局的,过多的使用可能会影响到其他应用程序的运行,所以多用在调试。

3.5 -rpath 程序运行时查找so文件路径

export CXX="${CXX}  -Wl,-rpath=/toolchain/lib"
export CXX="${CXX}  -Wl,-rpath-link=/toolchain/lib"

3.7 -I 指定头文件路径

include_file_PATH="/toolchain/include"
export CC="${CC} -I${include_file_PATH}"

3.8 -L 查找指定目录里so文件

参考 3.3 使用方法

3.9 -march 指定CPU平台

target_host="arm-openwrt-linux"
export CC="${target_host}-gcc -march=armv7-a -marm -mfpu=neon -mfloat-abi=hard -DQL=1 "

3.2


3.2



四、其他

4.1

-L		#指定连接时库的搜索路径
-l		#来显示指定,比如"-labc"表示的库文件为libabc.so
-rpath-link	#比"-L"多一项功能,它指定的目录还可以用于搜索依赖库。
-rpath 比 -rpath-link 	#多一项功能,它指定的目录会被编译进程序中,当程序运行时,首先从这些目录中寻找库。
-I		#指定头文件路径

4.2

文件名:




免责声明:本号所涉及内容仅供安全研究与教学使用,如出现其他风险,后果自负。




参考、来源:
https://blog.csdn.net/cs_sword2000/article/details/99313127
https://blog.csdn.net/hhd1988/article/details/123443735
https://blog.csdn.net/bryanwang_3099/article/details/131234424



标签:bin,文件,gcc,xxxx,export,linux,toolchain,arm
From: https://www.cnblogs.com/wutou/p/18335073

相关文章

  • 《收获日3》游戏提示“缺失binkw32.dll”文件怎么处理?收获日3弹窗“缺失binkw32.dll”
    在玩《收获日3》时,遇到弹窗提示“缺失binkw32.dll”的问题令人困扰。别着急,这里为您提供有效的处理方法。可能需要重新安装相关组件,或者从特定网站下载该文件等。本篇将为大家带来弹窗“缺失binkw32.dll”处理方法的内容,感兴趣的小伙伴们一起来看看吧,希望能够帮助到大家。弹......
  • 解压先锋汽车收音机的更新 bin 固件文件
    我对bin文件/python等很菜鸟,但也许有人可以帮助我。首先,我只想更改先锋汽车收音机的语言,确切地说是DMH-A240BT型号。我不想破解它们或改变逻辑方面。没有波兰语,我想也许可以做一些更新,但我在互联网上找不到任何东西...我只在这里找到了固件更新:https://pioneer03.s3.a......
  • canal 报错:Could not find first log file name in binary log index file
    canalwiki地址:https://github.com/alibaba/canal/wiki/canal报错:Couldnotfindfirstlogfilenameinbinarylogindexfile1、canal_deployer日志报错:2024-07-2914:25:21.624[destination=example,address=/192.168.1.7:3306,EventParser]ERRORc.a.o.c.p.......
  • MySQL 主从复制,常见的binlog错误及解决方法
    在主从复制架构下,MySQL通过binlog来实现主从数据的一致性。 MySQL主从复制主要有以下步骤1.master将改变记录到binarylog中2.slaveio_thread去请求主库的binlog,并将得到的binlog日志写到relaylog中3.slavesql_thread重做relaylog中的事件 除了作为MySQL主从复制......
  • 在指定的 json 边界内绘制 hexbin 截断
    我正在绘制一个单独的hexbin图和json边界文件。不过,hexbin网格与边界文件重叠。我只想展示非洲大陆。我的目标是在非洲大陆内切断或分割六边形网格因此,边界文件之外不应显示任何网格方块。有没有办法使用Plotly来实现这一点?预期的输出是截断或剪切非洲大陆之外的......
  • Robin-Stocks Python 中的 order_buy_fractional_by_price 问题
    我在Robin-StocksPython包中的order_buy_fractional_by_price函数中遇到问题。在正常市场交易时间内下达以美元为基础的买入订单时,该订单被错误地设置为限价订单。对我来说看起来有问题的代码似乎是导致此问题的原因。我尝试在包管理器中本地修改或删除有问题的代码,但遇......
  • 在窗口中尝试 pybind11:对 __imp_PyGILState_Check 的未定义引用
    我正在尝试让pybind11在Windows中工作。我已经使用conda-forge安装了pybind11,然后执行最简单的代码:#include"pybind11/pybind11.h"namespacepy=pybind11;用:g++-std=c++17-O2-mavx-IC:/Users/beng_/anaconda3/Lib/site-packages/pybind11/include-IC:......
  • 虚拟机:GCC共享库在连接时的搜索位置和优选次序
    假设有两个相同的共享库,一个在标准的共享库搜索目录(/lib/i386-linux-gnu),一个在非标准目录(/home/charles/tmp):在/home/charles/tmp下有个测试程序main.c,调用共享库里的函数。用如下的命令编译:用ldd看一下link的共享库:可以看出,虽然我们指定了要使用/home/charles/tmp下的......
  • Go: Gin框架中的binding验证器使用指南
    Go:Gin框架中的binding验证器使用指南原创 王义杰 AI学者王义杰  2024年05月30日22:33 广东 听全文在Gin框架中,数据绑定和验证是开发API时不可或缺的部分。Gin提供了强大的binding功能,允许我们将请求的数据绑定到结构体,并通过标签进行数据验证。本文将详细讲解如......
  • Vcpkg + cmake + pybind 问题“无法找到平台独立库 <前缀>”
    我发现了vcpkgerlier,它看起来很有趣,但是易于使用。据我了解,经过一天的调查,vcpkgpybind11与vcpkgpython搭配使用。但是当我启动一个简单的程序时,它被中止并出现以下输出无法找到平台独立库<前缀>这是一个已知问题,但不适用于vcpkgpython。我不知道为什么?不......