前言全局说明
交叉编译工具链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"
3.6 --rpath-link 搜索依赖库
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