ifeq ($(debug), 0)
DEBUG_FLAG = -O2 -g
OBJ_DIR = release
BUILD_CONFIG = RELEASE
DBG_CONFIG = -DRWDEBUG=0 -D_RWCONFIG=m
else
DEBUG_FLAG = -g
OBJ_DIR = debug
BUILD_CONFIG = DEBUG
DBG_CONFIG = -D_DEBUG -DRWDEBUG=1 -D_RWCONFIG=md
endif
$(MOD_BIN):$(MOD_OBJ)
@mkdir -p $(dir $(MOD_BIN)) $(DBG_PATH)
@if [ -h "$(LibDir)/$(notdir $(MOD_BIN) )" ]; then rm -f "$(LibDir)/$(notdir $(MOD_BIN) )"; fi
$(CXX) -o $(MOD_BIN) $(MOD_OBJ) $(DEBUG_FLAG) $(LD_SO_FLAGS) $(LINKFLAGS) 2>>errlog
@objcopy --only-keep-debug $(MOD_BIN) $(DBG_PATH)/$(basename $(notdir $@)).dbg
@objcopy --strip-debug $(MOD_BIN)
@objcopy --add-gnu-debuglink=$(DBG_PATH)/$(basename $(notdir $@)).dbg $(MOD_BIN)
@if [ ! -h "$(LibDir)/$(notdir $(MOD_BIN) )" ]; then cp $(shell cd $(dir $(MOD_BIN));pwd)/$(notdir $(MOD_BIN)) $(LibDir)/$(notdir $(MOD_BIN) ); fi
分享到:
相关推荐
ARM Linux下的GCC编译器是针对ARM处理器架构的GNU编译器集合,它能够处理C、C++、Objective-C等编程语言的源代码,最终编译生成适合ARM处理器的机器代码。在进行嵌入式Linux开发时,GCC编译器扮演了至关重要的角色,...
arm-linux-ld 命令说明 ...最后,在编译和链接过程中,需要注意的是,arm-linux-ld 命令的使用和 linker script 的编写。只有当我们正确地使用 arm-linux-ld 命令和 linker script,才能生成正确的可执行文件。
- `-g`:生成调试信息,支持使用GDB进行调试。 - `-l library`:链接指定的库文件。 - `-static`:进行静态链接。 - `-shared`:生成共享库文件。 - `-I dir`:指定头文件的搜索路径。 - `-L dir`:指定库文件的搜索...
本文将对`arm-linux-gcc`、`ld`、`objcopy`和`objdump`等工具进行详细的介绍和总结,这些工具在Linux环境下针对ARM架构的软件开发中扮演着至关重要的角色。 `arm-linux-gcc`是ARM架构下的GNU编译器集合,它包括了预...
在嵌入式开发领域,尤其是在ARM架构下进行Linux环境的编程时,`arm-linux-ld` 命令是必不可少的一部分。它主要负责将编译后产生的多个目标文件(.o 文件)连接成最终可以在目标硬件上运行的二进制文件。本文将从基本...
本指南旨在帮助初学者了解并掌握AVR-GCC的基本使用方法。 #### 安装AVR-GCC 1. **下载与安装**: - 下载AVR-GCC工具链。 - 根据操作系统选择合适的安装包。 - 对于Windows用户,推荐使用WinAVR或mingw-w64。 - ...
总结来说,`arm-linux-ld`在嵌入式Linux开发中是不可或缺的工具,它负责将编译后的碎片化代码整合成可执行程序,并根据需求进行内存布局。理解并熟练运用`ld`指令及链接脚本,对于编写高效、可靠的Makefile至关重要...
**ARM-Linux-ld指令详解** ...了解并熟练掌握`arm-linux-ld`指令的使用,对于编写高效的Makefile和进行嵌入式系统开发至关重要。通过调整链接参数和linker script,开发者能够精确控制程序的内存占用和执行效率。
- 使用`arm-linux-gcc`进行交叉编译。 - 目标设备上运行GDBserver,指定IP地址和程序。 - 远程主机上使用`arm-linux-gdb`连接并调试程序。 5. **工程管理 Makefile基本格式**: Makefile定义了一系列规则,指示...
### GCC使用手册知识点详解 #### 一、GCC简介与特性 **GCC**(GNU Compiler Collection)是一种高度集成的编译工具集,它不仅...掌握GCC的使用方法对于软件开发者来说是非常重要的,尤其是在Linux平台上的开发工作。
3. **Makefile**:定义了编译规则,通过调用`arm-linux-gcc`命令进行编译。 具体的编译步骤如下: 1. 编译`.s`和`.c`文件: ```bash arm-linux-gcc -g -c -o int.o int.s arm-linux-gcc -g -c -o led.o led.c ...
- 首先,使用`arm-linux-gcc`编译器将`crt0.S`和`leds.c`源文件分别编译为`.o`目标文件。 - 然后,利用`arm-linux-ld`链接器将目标文件链接成ELF格式的可执行文件`leds_elf`,并指定文本段的起始地址为`0x00000000...
裸机实验是指在没有任何操作系统的情况下,直接与硬件进行交互的编程实践。这种方式有助于深入理解底层硬件的工作原理以及如何直接控制硬件资源。 #### 二、ARM处理器基础 ARM处理器是一种基于精简指令集计算机...
这种情况下,如果每次都手动输入命令如 `gcc a.c b.c c.c d.c e.c f.c g.c -o exe` 来进行编译,不仅非常繁琐,而且容易出错。为了解决这一问题,引入了 **Makefile** 这一自动化构建工具。 **Makefile** 是一种...
4. **编译与链接**:使用上述提到的工具链对源代码进行编译和链接。 5. **测试与调试**:确保软件符合预期的功能要求,并修复可能出现的问题。 #### 四、Make工具 Make是一个非常重要的自动化构建工具,用于管理...
在C++中,使用 `extern "C"` 来声明函数或变量时,会告诉编译器这些函数或变量按照C语言的方式进行链接,而不是C++的名称修饰(name mangling)。这通常用于C++程序调用C库或在C++代码中包含C库头文件时。 #### ...