自用的用来编译pro*c 代码的makefile, 包括2个部分,一个是common.mak, 定义一些共通属性,一个则是用来编译main程序。
1. common.mak
.SUFFIXES: .pc .c vpath %.h ../inc vpath %.tbl ../tbl CC = gcc PROC = proc LD = ld RM = rm -f DEBUGFLAG = -g CFLAGS = -W -Wall -DISA_DEBUG -c PROC_CFLAGS = INC = ../inc TBL = ../tbl OBJ = ../obj OUT = ../bin LIB = ../lib INCLUDE_PATH = -I$(ORACLE_HOME)/rdbms/public/ -I$(INC)/ -I$(TBL)/ .pc.c: proc common_parser=yes include=$(INC)/ include=$(TBL)/ iname=$*.pc
2. 编译主程序用的makefile
.PHONY : all clean ROOT_DIR = ../ include $(ROOT_DIR)/common.mak PROG = xxxx EXE = $(OUT)/$(PROG) OBJS = $(OBJ)/$(PROG).o GEN_SRC = $(PROG).c $(PROG).lis all : $(EXE) $(EXE) : $(OBJS) $(CC) -o $@ -L $(ORACLE_HOME)/lib -lclntsh $(OBJS) $(LIB)/libkozacomm.a $(OBJS) : $(PROG).c xxx.tbl xxx.h $(CC) $(CFLAGS) $(DEBUGFLAG) $(INCLUDE_PATH) -o $@ $< clean: $(RM) $(OBJS) $(RM) $(EXE) $(RM) $(GEN_SRC)
3. 如果有一堆主程序要编译,就把他们放在不同子目录下,然后在根目录下创建如下makefile
SUBDIRS = common \ aaa bbb \ ccc .PHONY : all clean $(SUBDIRS) all : $(SUBDIRS) $(SUBDIRS): $(MAKE) -C $@ clean: for dir in $(SUBDIRS); do \ $(MAKE) -C $$dir clean; \ done
注意点
1. pro*c 的编译参数common_parser=yes, 没有的话会对sql99的语法报错。
2. 想要编译时候检查语法错误需加SQLCHECK={SEMANTICS | FULL | SYNTAX | LIMITED}
例:
sqlcheck=full userid=useid/xxx@orclxxx common_parser=yes
相关推荐
### Linux内核的Makefile与Kconfig解读 #### 一、概述 在深入探讨Linux内核的`Makefile`...综上所述,通过合理利用`Makefile`和`Kconfig`文件,我们可以高效地管理和定制Linux内核,以适应各种不同的应用场景和需求。
### Linux驱动编译与运行详解 #### 一、理解Linux驱动程序 Linux驱动程序是操作系统与硬件设备之间的桥梁,负责管理硬件资源并提供相应的服务。它们通常被编写为内核模块,可以动态加载或卸载,以适应系统需求的...
- **VI使用**: 介绍如何使用文本编辑器VI进行文本编辑。 - **Linux系统管理**: 涉及Linux系统的基本管理任务,如用户管理、服务管理等。 - **Shell编程**: 教授如何编写Shell脚本以自动化执行任务。 - **Qcd功能...
通过以上详尽的目录结构解析,我们可以看出Linux编译环境不仅提供了底层硬件的驱动支持,还包含了上层应用的开发框架,是一个集硬件抽象、内核管理、应用开发于一体的综合平台。这对于嵌入式系统的研发人员来说,是...
要将larbin应用于扫描器(Scanner),可能需要进行交叉编译,以使larbin能在目标平台(如嵌入式设备或不同的操作系统)上运行。交叉编译涉及到配置交叉编译工具链,通常包括指定编译器路径、链接器路径等。具体配置...
- **概念**:用于编译目标平台上的程序,但不在目标平台上编译,而是在宿主机上编译。 - **工具**:GCC/G++等编译器、GDB调试器等。 ##### 2-3 U-Boot介绍 - **全称**:Universal Boot Loader。 - **特点**:开源、...
1. **Linux内核代码平台相关代码分析** - 学习如何分析和修改内核代码,以便适应不同的硬件平台。 2. **ARM平台介绍** - 了解ARM处理器架构的特点和优势,掌握ARM平台的基本知识。 3. **平台移植的关键技术** - ...
1. **Linux内核代码平台相关代码分析**:学习如何阅读和理解Linux内核代码,特别是与特定硬件平台相关的部分。 2. **ARM平台介绍**:了解ARM架构的基本特性,包括指令集、寄存器组织等。 3. **平台移植的关键技术**...
**Linux内核代码平台相关代码分析** - 内核配置文件的理解。 - 平台支持代码的位置与作用。 **ARM平台介绍** - ARM架构的特性。 - ARM处理器的工作模式。 **平台移植的关键技术** - 设备驱动的适配。 - 板级支持包...
- **定义**:“Linux” 或 “Linux内核” 是一种用C语言和汇编语言编写的操作系统内核,提供硬件抽象、磁盘及外部设备控制、文件系统控制、多任务等功能。 - **发展历程**:由Linus Torvalds在1991年创建。 - **组成...
### Linux内核模块编程指南(经典):知识点详解 #### 一、内核模块简介与基础知识 **1. 内核模块概念** - **定义**:内核模块是可加载到Linux内核中的独立程序片段,它允许在系统运行时动态地添加、删除或更改...
- **Makefile**: 定义了如何编译和链接程序。 - **GDB调试器**: GNU Debugger,用于调试程序。 - **配置管理工具**: 如CVS、GIT和SVN,用于版本控制。 - **Eclipse+Cdt**: 集成开发环境及其插件,适合C/C++开发。 - ...
在本例中,我们看到描述中提到使用 `make` 命令,并且指定了 `CROSS_COMPILE` 变量为 `arm-hisiv400-linux-gcc`,这表明这个软件包是为基于ARM架构的Hisilicon HiSilicon V400平台上的Linux系统编译的。 1. **交叉...
Google所提供的内核源代码不仅仅包括标准Linux内核的部分,还包括了与虚拟处理器QEMU和模拟硬件平台Goldfish相关的代码。这部分代码主要用于Android模拟器,使得开发者能够在计算机上模拟真实设备的运行环境。 ####...
- **Linux内核移植到ARM平台**:实践将Linux内核移植到ARM平台上。 #### 六、嵌入式Linux串口通信 - **目标**:掌握嵌入式系统中串口通信的基本原理和技术。 - **知识点**: - **串行I/O概念**:理解串行通信的...
- **背景**: Linux可以在多种不同的架构上运行,因此内核代码需要具备高度的可移植性,以适应不同的硬件平台。 ##### 1.2 编译内核的方法 **1.2.1 内核编译参数的配置** - **工具**: 使用`make menuconfig`或`make...
- **gcc使用方法**:学习使用gcc编译器进行C语言程序的编译。 - **gdb调试技术**:掌握使用gdb进行程序调试的方法。 - **Makefile**:理解Makefile的工作原理,并能够编写简单的Makefile文件。 - **程序编写实践**:...