arm-linux-gcc/ld/objcopy/objdump

本文介绍了使用ARM Linux工具链进行编译的过程,包括使用arm-linux-gcc将源文件编译成.o文件,通过arm-linux-ld进行链接生成a.out文件,利用arm-linux-objcopy转换目标文件为boot.bin,并使用arm-linux-objdump进行反汇编。

1. arm-linux-gcc

编译器,将源文件(.c和.S文件)编译成.o文件。

例:arm-linux-gcc -ffreestanding -c source.c source.S  //编译.c和.S文件,生成对应的.o文件


2. arm-linux-ld

链接器,把.o文件链接成目标文件(a.out)。

例:arm-linux-ld -Ttext=0x20000000 -T boot.lds *.o  //-Ttext=0x20000000指定链接地址, -T boot.lds指定链接顺序


3. arm-linux-objcopy

把目标文件(a.out)的内容复制到另一种类型的目标文件(boot.bin)中。

例:arm-linux-objcopy -O binary a.out boot.bin  //-O binary指定目标文件类型为二进制文件


4. arm-linux-objdump

反汇编,将目标文件(a.out)进行反汇编。

例:arm-linux-objdump -D a.out > file  //将a.out反汇编后重定向到file文件中,方便查看

是不是得用厂家工具链里的编译器编译 bell@bell-virtual-machine:~/nm/nvr_2025/torchlight/staging_dir/toolchain-arm-openwrt-linux-uclibcgnueabihf/bin$ ls arm-buildroot-linux-uclibcgnueabihf-addr2line arm-buildroot-linux-uclibcgnueabihf-ar arm-buildroot-linux-uclibcgnueabihf-as arm-buildroot-linux-uclibcgnueabihf-c++ arm-buildroot-linux-uclibcgnueabihf-c++.br_real arm-buildroot-linux-uclibcgnueabihf-cc arm-buildroot-linux-uclibcgnueabihf-cc.br_real arm-buildroot-linux-uclibcgnueabihf-c++filt arm-buildroot-linux-uclibcgnueabihf-cpp arm-buildroot-linux-uclibcgnueabihf-cpp.br_real arm-buildroot-linux-uclibcgnueabihf-elfedit arm-buildroot-linux-uclibcgnueabihf-g++ arm-buildroot-linux-uclibcgnueabihf-g++.br_real arm-buildroot-linux-uclibcgnueabihf-gcc arm-buildroot-linux-uclibcgnueabihf-gcc-4.9.4 arm-buildroot-linux-uclibcgnueabihf-gcc-4.9.4.br_real arm-buildroot-linux-uclibcgnueabihf-gcc-ar arm-buildroot-linux-uclibcgnueabihf-gcc.br_real arm-buildroot-linux-uclibcgnueabihf-gcc-nm arm-buildroot-linux-uclibcgnueabihf-gcc-ranlib arm-buildroot-linux-uclibcgnueabihf-gcov arm-buildroot-linux-uclibcgnueabihf-gdb arm-buildroot-linux-uclibcgnueabihf-gprof arm-buildroot-linux-uclibcgnueabihf-ld arm-buildroot-linux-uclibcgnueabihf-ld.bfd arm-buildroot-linux-uclibcgnueabihf-ldconfig arm-buildroot-linux-uclibcgnueabihf-ldd arm-buildroot-linux-uclibcgnueabihf-nm arm-buildroot-linux-uclibcgnueabihf-objcopy arm-buildroot-linux-uclibcgnueabihf-objdump arm-buildroot-linux-uclibcgnueabihf-ranlib arm-buildroot-linux-uclibcgnueabihf-readelf arm-buildroot-linux-uclibcgnueabihf-size arm-buildroot-linux-uclibcgnueabihf-strings arm-buildroot-linux-uclibcgnueabihf-strip
09-03
touch /home/tp/Project/nvr_2025/torchlight/staging_dir/target-arm-openwrt-linux-uclibcgnueabihf/root-mstar/stamp/.minigui_installed make[3]: Leaving directory '/home/tp/Project/nvr_2025/tp_package/u_packages/minigui' make[3]: Entering directory '/home/tp/Project/nvr_2025/tp_package/u_packages/mgi' rm -rf /home/tp/Project/nvr_2025/torchlight/staging_dir/target-arm-openwrt-linux-uclibcgnueabihf/root-mstar/tmp-mgi mkdir -p /home/tp/Project/nvr_2025/torchlight/staging_dir/target-arm-openwrt-linux-uclibcgnueabihf/root-mstar/stamp /home/tp/Project/nvr_2025/torchlight/staging_dir/target-arm-openwrt-linux-uclibcgnueabihf/root-mstar/tmp-mgi install -d -m0755 /home/tp/Project/nvr_2025/torchlight/staging_dir/target-arm-openwrt-linux-uclibcgnueabihf/root-mstar/tmp-mgi/usr/lib cp -fpR /home/tp/Project/nvr_2025/torchlight/build_dir/target-arm-openwrt-linux-uclibcgnueabihf/mgi/.lib/libmgi.so /home/tp/Project/nvr_2025/torchlight/staging_dir/target-arm-openwrt-linux-uclibcgnueabihf/root-mstar/tmp-mgi/usr/lib/ SHELL= /home/tp/Project/nvr_2025/torchlight/staging_dir/host/bin/flock /home/tp/Project/nvr_2025/torchlight/tmp/.root-copy.flock -c 'cp -fpR /home/tp/Project/nvr_2025/torchlight/staging_dir/target-arm-openwrt-linux-uclibcgnueabihf/root-mstar/tmp-mgi/. /home/tp/Project/nvr_2025/torchlight/staging_dir/target-arm-openwrt-linux-uclibcgnueabihf/root-mstar/' rm -rf /home/tp/Project/nvr_2025/torchlight/staging_dir/target-arm-openwrt-linux-uclibcgnueabihf/root-mstar/tmp-mgi touch /home/tp/Project/nvr_2025/torchlight/staging_dir/target-arm-openwrt-linux-uclibcgnueabihf/root-mstar/stamp/.mgi_installed make[3]: Leaving directory '/home/tp/Project/nvr_2025/tp_package/u_packages/mgi' make[3]: Entering directory '/home/tp/Project/nvr_2025/tp_package/u_packages/miniupnpc' rm -rf /home/tp/Project/nvr_2025/torchlight/staging_dir/target-arm-openwrt-linux-uclibcgnueabihf/root-mstar/tmp-miniupnpc mkdir -p /home/tp/Project/nvr_2025/torchlight/staging_dir/target-arm-openwrt-linux-uclibcgnueabihf/root-mstar/stamp /home/tp/Project/nvr_2025/torchlight/staging_dir/target-arm-openwrt-linux-uclibcgnueabihf/root-mstar/tmp-miniupnpc install -d -m0755 /home/tp/Project/nvr_2025/torchlight/staging_dir/target-arm-openwrt-linux-uclibcgnueabihf/root-mstar/tmp-miniupnpc/usr/bin install -m0755 /home/tp/Project/nvr_2025/torchlight/build_dir/target-arm-openwrt-linux-uclibcgnueabihf/miniupnpc-1.9/ipkg-install/usr/bin/upnpc /home/tp/Project/nvr_2025/torchlight/staging_dir/target-arm-openwrt-linux-uclibcgnueabihf/root-mstar/tmp-miniupnpc/usr/bin/ cp -fpR ./files/* /home/tp/Project/nvr_2025/torchlight/staging_dir/target-arm-openwrt-linux-uclibcgnueabihf/root-mstar/tmp-miniupnpc/ SHELL= /home/tp/Project/nvr_2025/torchlight/staging_dir/host/bin/flock /home/tp/Project/nvr_2025/torchlight/tmp/.root-copy.flock -c 'cp -fpR /home/tp/Project/nvr_2025/torchlight/staging_dir/target-arm-openwrt-linux-uclibcgnueabihf/root-mstar/tmp-miniupnpc/. /home/tp/Project/nvr_2025/torchlight/staging_dir/target-arm-openwrt-linux-uclibcgnueabihf/root-mstar/' rm -rf /home/tp/Project/nvr_2025/torchlight/staging_dir/target-arm-openwrt-linux-uclibcgnueabihf/root-mstar/tmp-miniupnpc touch /home/tp/Project/nvr_2025/torchlight/staging_dir/target-arm-openwrt-linux-uclibcgnueabihf/root-mstar/stamp/.miniupnpc_installed rm -rf /home/tp/Project/nvr_2025/torchlight/staging_dir/target-arm-openwrt-linux-uclibcgnueabihf/root-mstar/tmp-libminiupnpc mkdir -p /home/tp/Project/nvr_2025/torchlight/staging_dir/target-arm-openwrt-linux-uclibcgnueabihf/root-mstar/stamp /home/tp/Project/nvr_2025/torchlight/staging_dir/target-arm-openwrt-linux-uclibcgnueabihf/root-mstar/tmp-libminiupnpc install -d -m0755 /home/tp/Project/nvr_2025/torchlight/staging_dir/target-arm-openwrt-linux-uclibcgnueabihf/root-mstar/tmp-libminiupnpc/usr/lib install -m0755 /home/tp/Project/nvr_2025/torchlight/build_dir/target-arm-openwrt-linux-uclibcgnueabihf/miniupnpc-1.9/ipkg-install/usr/lib/libminiupnpc.so.* /home/tp/Project/nvr_2025/torchlight/staging_dir/target-arm-openwrt-linux-uclibcgnueabihf/root-mstar/tmp-libminiupnpc/usr/lib/ SHELL= /home/tp/Project/nvr_2025/torchlight/staging_dir/host/bin/flock /home/tp/Project/nvr_2025/torchlight/tmp/.root-copy.flock -c 'cp -fpR /home/tp/Project/nvr_2025/torchlight/staging_dir/target-arm-openwrt-linux-uclibcgnueabihf/root-mstar/tmp-libminiupnpc/. /home/tp/Project/nvr_2025/torchlight/staging_dir/target-arm-openwrt-linux-uclibcgnueabihf/root-mstar/' rm -rf /home/tp/Project/nvr_2025/torchlight/staging_dir/target-arm-openwrt-linux-uclibcgnueabihf/root-mstar/tmp-libminiupnpc touch /home/tp/Project/nvr_2025/torchlight/staging_dir/target-arm-openwrt-linux-uclibcgnueabihf/root-mstar/stamp/.libminiupnpc_installed make[3]: Leaving directory '/home/tp/Project/nvr_2025/tp_package/u_packages/miniupnpc' make[3]: Entering directory '/home/tp/Project/nvr_2025/tp_package/u_packages/core' WARNING: skipping core -- package not selected make[3]: Leaving directory '/home/tp/Project/nvr_2025/tp_package/u_packages/core' make[3]: Entering directory '/home/tp/Project/nvr_2025/tp_package/u_packages/nvrbug' mkdir -p /home/tp/Project/nvr_2025/torchlight/build_dir/target-arm-openwrt-linux-uclibcgnueabihf/nvrbug cp -fpR ./src/* /home/tp/Project/nvr_2025/torchlight/build_dir/target-arm-openwrt-linux-uclibcgnueabihf/nvrbug/ touch /home/tp/Project/nvr_2025/torchlight/build_dir/target-arm-openwrt-linux-uclibcgnueabihf/nvrbug/.prepared_5aee6d7907662706e66be387d0538e8d (cd /home/tp/Project/nvr_2025/torchlight/build_dir/target-arm-openwrt-linux-uclibcgnueabihf/nvrbug/./; if [ -x ./configure ]; then /usr/bin/find /home/tp/Project/nvr_2025/torchlight/build_dir/target-arm-openwrt-linux-uclibcgnueabihf/nvrbug/ -name config.guess | xargs -r chmod u+w; /usr/bin/find /home/tp/Project/nvr_2025/torchlight/build_dir/target-arm-openwrt-linux-uclibcgnueabihf/nvrbug/ -name config.guess | xargs -r -n1 cp --remove-destination /home/tp/Project/nvr_2025/torchlight/scripts/config.guess; /usr/bin/find /home/tp/Project/nvr_2025/torchlight/build_dir/target-arm-openwrt-linux-uclibcgnueabihf/nvrbug/ -name config.sub | xargs -r chmod u+w; /usr/bin/find /home/tp/Project/nvr_2025/torchlight/build_dir/target-arm-openwrt-linux-uclibcgnueabihf/nvrbug/ -name config.sub | xargs -r -n1 cp --remove-destination /home/tp/Project/nvr_2025/torchlight/scripts/config.sub; AR=arm-sigmastar-linux-uclibcgnueabihf-ar AS="arm-sigmastar-linux-uclibcgnueabihf-gcc -c -Os -pipe -march=armv7-a" LD=arm-sigmastar-linux-uclibcgnueabihf-ld NM=arm-sigmastar-linux-uclibcgnueabihf-nm CC="arm-sigmastar-linux-uclibcgnueabihf-gcc" GCC="arm-sigmastar-linux-uclibcgnueabihf-gcc" CXX="arm-sigmastar-linux-uclibcgnueabihf-g++" RANLIB=arm-sigmastar-linux-uclibcgnueabihf-ranlib STRIP=arm-sigmastar-linux-uclibcgnueabihf-strip OBJCOPY=arm-sigmastar-linux-uclibcgnueabihf-objcopy OBJDUMP=arm-sigmastar-linux-uclibcgnueabihf-objdump SIZE=arm-sigmastar-linux-uclibcgnueabihf-size CFLAGS="-Os -pipe -march=armv7-a " CXXFLAGS="-Os -pipe -march=armv7-a " CPPFLAGS="-I/home/tp/Project/nvr_2025/torchlight/staging_dir/target-arm-openwrt-linux-uclibcgnueabihf/usr/include -I/home/tp/Project/nvr_2025/torchlight/staging_dir/target-arm-openwrt-linux-uclibcgnueabihf/include -I/home/tp/Project/nvr_2025/torchlight/../sstar931/toolchain//arm-sigmastar-linux-uclibcgnueabihf/sysroot/usr/include " LDFLAGS="-L/home/tp/Project/nvr_2025/torchlight/staging_dir/target-arm-openwrt-linux-uclibcgnueabihf/usr/lib -L/home/tp/Project/nvr_2025/torchlight/staging_dir/target-arm-openwrt-linux-uclibcgnueabihf/lib -L/home/tp/Project/nvr_2025/torchlight/../sstar931/toolchain//arm-sigmastar-linux-uclibcgnueabihf/sysroot/usr/lib " ./configure --target=arm-openwrt-linux-uclibcgnueabihf --host=arm-openwrt-linux-uclibcgnueabihf --build=x86_64-linux-gnu --program-prefix="" --program-suffix="" --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --libexecdir=/usr/lib --sysconfdir=/etc --datadir=/usr/share --localstatedir=/var --mandir=/usr/man --infodir=/usr/info --disable-nls --disable-ipv6 ; fi; ) rm -f /home/tp/Project/nvr_2025/torchlight/build_dir/target-arm-openwrt-linux-uclibcgnueabihf/nvrbug/.configured_* touch /home/tp/Project/nvr_2025/torchlight/build_dir/target-arm-openwrt-linux-uclibcgnueabihf/nvrbug/.configured_ CFLAGS="-Os -pipe -march=armv7-a -I/home/tp/Project/nvr_2025/torchlight/staging_dir/target-arm-openwrt-linux-uclibcgnueabihf/usr/include -I/home/tp/Project/nvr_2025/torchlight/staging_dir/target-arm-openwrt-linux-uclibcgnueabihf/include -I/home/tp/Project/nvr_2025/torchlight/../sstar931/toolchain//arm-sigmastar-linux-uclibcgnueabihf/sysroot/usr/include " CXXFLAGS="-Os -pipe -march=armv7-a -I/home/tp/Project/nvr_2025/torchlight/staging_dir/target-arm-openwrt-linux-uclibcgnueabihf/usr/include -I/home/tp/Project/nvr_2025/torchlight/staging_dir/target-arm-openwrt-linux-uclibcgnueabihf/include -I/home/tp/Project/nvr_2025/torchlight/../sstar931/toolchain//arm-sigmastar-linux-uclibcgnueabihf/sysroot/usr/include " LDFLAGS="-L/home/tp/Project/nvr_2025/torchlight/staging_dir/target-arm-openwrt-linux-uclibcgnueabihf/usr/lib -L/home/tp/Project/nvr_2025/torchlight/staging_dir/target-arm-openwrt-linux-uclibcgnueabihf/lib -L/home/tp/Project/nvr_2025/torchlight/../sstar931/toolchain//arm-sigmastar-linux-uclibcgnueabihf/sysroot/usr/lib " make -j1 -C /home/tp/Project/nvr_2025/torchlight/build_dir/target-arm-openwrt-linux-uclibcgnueabihf/nvrbug/. AR=arm-sigmastar-linux-uclibcgnueabihf-ar AS="arm-sigmastar-linux-uclibcgnueabihf-gcc -c -Os -pipe -march=armv7-a" LD=arm-sigmastar-linux-uclibcgnueabihf-ld NM=arm-sigmastar-linux-uclibcgnueabihf-nm CC="arm-sigmastar-linux-uclibcgnueabihf-gcc" GCC="arm-sigmastar-linux-uclibcgnueabihf-gcc" CXX="arm-sigmastar-linux-uclibcgnueabihf-g++" RANLIB=arm-sigmastar-linux-uclibcgnueabihf-ranlib STRIP=arm-sigmastar-linux-uclibcgnueabihf-strip OBJCOPY=arm-sigmastar-linux-uclibcgnueabihf-objcopy OBJDUMP=arm-sigmastar-linux-uclibcgnueabihf-objdump SIZE=arm-sigmastar-linux-uclibcgnueabihf-size CROSS="arm-sigmastar-linux-uclibcgnueabihf-" ARCH="arm" ; make[4]: Entering directory '/home/tp/Project/nvr_2025/torchlight/build_dir/target-arm-openwrt-linux-uclibcgnueabihf/nvrbug' arm-sigmastar-linux-uclibcgnueabihf-gcc -Os -pipe -march=armv7-a -I/home/tp/Project/nvr_2025/torchlight/staging_dir/target-arm-openwrt-linux-uclibcgnueabihf/usr/include -I/home/tp/Project/nvr_2025/torchlight/staging_dir/target-arm-openwrt-linux-uclibcgnueabihf/include -I/home/tp/Project/nvr_2025/torchlight/../sstar931/toolchain//arm-sigmastar-linux-uclibcgnueabihf/sysroot/usr/include -Wall -Werror -fno-strict-aliasing -ltrace_alloc -ldl -fno-omit-frame-pointer -c -o nvrbug.o nvrbug.c arm-sigmastar-linux-uclibcgnueabihf-gcc -Os -pipe -march=armv7-a -I/home/tp/Project/nvr_2025/torchlight/staging_dir/target-arm-openwrt-linux-uclibcgnueabihf/usr/include -I/home/tp/Project/nvr_2025/torchlight/staging_dir/target-arm-openwrt-linux-uclibcgnueabihf/include -I/home/tp/Project/nvr_2025/torchlight/../sstar931/toolchain//arm-sigmastar-linux-uclibcgnueabihf/sysroot/usr/include -Wall -Werror -fno-strict-aliasing -ltrace_alloc -ldl -fno-omit-frame-pointer -o nvrbug nvrbug.o -L/home/tp/Project/nvr_2025/torchlight/staging_dir/target-arm-openwrt-linux-uclibcgnueabihf/usr/lib -L/home/tp/Project/nvr_2025/torchlight/staging_dir/target-arm-openwrt-linux-uclibcgnueabihf/lib -L/home/tp/Project/nvr_2025/torchlight/../sstar931/toolchain//arm-sigmastar-linux-uclibcgnueabihf/sysroot/usr/lib -ljson -lubus -lubox -lblobmsg_json -luci -lm -ltrace_alloc -ldl make[4]: Leaving directory '/home/tp/Project/nvr_2025/torchlight/build_dir/target-arm-openwrt-linux-uclibcgnueabihf/nvrbug' touch /home/tp/Project/nvr_2025/torchlight/build_dir/target-arm-openwrt-linux-uclibcgnueabihf/nvrbug/.built mkdir -p /home/tp/Project/nvr_2025/torchlight/bin/mstar/packages /home/tp/Project/nvr_2025/torchlight/build_dir/target-arm-openwrt-linux-uclibcgnueabihf/nvrbug/ipkg-mstar/nvrbug/CONTROL /home/tp/Project/nvr_2025/torchlight/staging_dir/target-arm-openwrt-linux-uclibcgnueabihf/pkginfo install -d -m0755 /home/tp/Project/nvr_2025/torchlight/build_dir/target-arm-openwrt-linux-uclibcgnueabihf/nvrbug/ipkg-mstar/nvrbug/etc/init.d install -d -m0755 /home/tp/Project/nvr_2025/torchlight/build_dir/target-arm-openwrt-linux-uclibcgnueabihf/nvrbug/ipkg-mstar/nvrbug/bin strip /home/tp/Project/nvr_2025/torchlight/build_dir/target-arm-openwrt-linux-uclibcgnueabihf/nvrbug/nvrbug strip: Unable to recognise the format of the input file `/home/tp/Project/nvr_2025/torchlight/build_dir/target-arm-openwrt-linux-uclibcgnueabihf/nvrbug/nvrbug' Makefile:37: recipe for target '/home/tp/Project/nvr_2025/torchlight/bin/mstar/packages/nvrbug_1_mstar.ipk' failed make[3]: [/home/tp/Project/nvr_2025/torchlight/bin/mstar/packages/nvrbug_1_mstar.ipk] Error 1 (ignored) install -m0755 /home/tp/Project/nvr_2025/torchlight/build_dir/target-arm-openwrt-linux-uclibcgnueabihf/nvrbug/nvrbug /home/tp/Project/nvr_2025/torchlight/build_dir/target-arm-openwrt-linux-uclibcgnueabihf/nvrbug/ipkg-mstar/nvrbug/bin/ cp -f /home/tp/Project/nvr_2025/torchlight/build_dir/target-arm-openwrt-linux-uclibcgnueabihf/nvrbug/files/etc/init.d/nvrbug /home/tp/Project/nvr_2025/torchlight/build_dir/target-arm-openwrt-linux-uclibcgnueabihf/nvrbug/ipkg-mstar/nvrbug/etc/init.d/nvrbug cp: cannot stat '/home/tp/Project/nvr_2025/torchlight/build_dir/target-arm-openwrt-linux-uclibcgnueabihf/nvrbug/files/etc/init.d/nvrbug': No such file or directory Makefile:37: recipe for target '/home/tp/Project/nvr_2025/torchlight/bin/mstar/packages/nvrbug_1_mstar.ipk' failed make[3]: *** [/home/tp/Project/nvr_2025/torchlight/bin/mstar/packages/nvrbug_1_mstar.ipk] Error 1 make[3]: Leaving directory '/home/tp/Project/nvr_2025/tp_package/u_packages/nvrbug' package/Makefile:105: recipe for target 'package/tp_package/u_packages/nvrbug/compile' failed make[2]: *** [package/tp_package/u_packages/nvrbug/compile] Error 2 make[2]: Leaving directory '/home/tp/Project/nvr_2025/torchlight' package/Makefile:101: recipe for target '/home/tp/Project/nvr_2025/torchlight/staging_dir/target-arm-openwrt-linux-uclibcgnueabihf/stamp/.package_compile' failed make[1]: *** [/home/tp/Project/nvr_2025/torchlight/staging_dir/target-arm-openwrt-linux-uclibcgnueabihf/stamp/.package_compile] Error 2 make[1]: Leaving directory '/home/tp/Project/nvr_2025/torchlight' /home/tp/Project/nvr_2025/torchlight/include/toplevel.mk:172: recipe for target 'world' failed make: *** [world] Error 2
最新发布
09-06
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值