`
jak47
  • 浏览: 73836 次
  • 性别: Icon_minigender_1
  • 来自: 火星
社区版块
存档分类
最新评论

Linux平台上编译proc*c 代码用的Makefile

 
阅读更多

自用的用来编译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教程之Linux内核的Makefile和kconfig解读

    ### Linux内核的Makefile与Kconfig解读 #### 一、概述 在深入探讨Linux内核的`Makefile`...综上所述,通过合理利用`Makefile`和`Kconfig`文件,我们可以高效地管理和定制Linux内核,以适应各种不同的应用场景和需求。

    linux驱动编译与运行-驱动程序

    ### Linux驱动编译与运行详解 #### 一、理解Linux驱动程序 Linux驱动程序是操作系统与硬件设备之间的桥梁,负责管理硬件资源并提供相应的服务。它们通常被编写为内核模块,可以动态加载或卸载,以适应系统需求的...

    嵌入式Linux视频教程全套2011新版-国嵌嵌入式培训下载地址

    - **VI使用**: 介绍如何使用文本编辑器VI进行文本编辑。 - **Linux系统管理**: 涉及Linux系统的基本管理任务,如用户管理、服务管理等。 - **Shell编程**: 教授如何编写Shell脚本以自动化执行任务。 - **Qcd功能...

    larbin编译环境及在scanner中搭建交叉编译环境

    要将larbin应用于扫描器(Scanner),可能需要进行交叉编译,以使larbin能在目标平台(如嵌入式设备或不同的操作系统)上运行。交叉编译涉及到配置交叉编译工具链,通常包括指定编译器路径、链接器路径等。具体配置...

    国嵌嵌入式LINUX视频教程LINUX内核驱动进阶班共35讲.txt

    - **概念**:用于编译目标平台上的程序,但不在目标平台上编译,而是在宿主机上编译。 - **工具**:GCC/G++等编译器、GDB调试器等。 ##### 2-3 U-Boot介绍 - **全称**:Universal Boot Loader。 - **特点**:开源、...

    嵌入式Linux系统学习步骤简介

    1. **Linux内核代码平台相关代码分析** - 学习如何分析和修改内核代码,以便适应不同的硬件平台。 2. **ARM平台介绍** - 了解ARM处理器架构的特点和优势,掌握ARM平台的基本知识。 3. **平台移植的关键技术** - ...

    嵌入式Linux学习步骤

    1. **Linux内核代码平台相关代码分析**:学习如何阅读和理解Linux内核代码,特别是与特定硬件平台相关的部分。 2. **ARM平台介绍**:了解ARM架构的基本特性,包括指令集、寄存器组织等。 3. **平台移植的关键技术**...

    嵌入式linux学习路线

    **Linux内核代码平台相关代码分析** - 内核配置文件的理解。 - 平台支持代码的位置与作用。 **ARM平台介绍** - ARM架构的特性。 - ARM处理器的工作模式。 **平台移植的关键技术** - 设备驱动的适配。 - 板级支持包...

    linux内核实验手册

    - **定义**:“Linux” 或 “Linux内核” 是一种用C语言和汇编语言编写的操作系统内核,提供硬件抽象、磁盘及外部设备控制、文件系统控制、多任务等功能。 - **发展历程**:由Linus Torvalds在1991年创建。 - **组成...

    Linux内核模块编程指南(经典)

    ### Linux内核模块编程指南(经典):知识点详解 #### 一、内核模块简介与基础知识 **1. 内核模块概念** - **定义**:内核模块是可加载到Linux内核中的独立程序片段,它允许在系统运行时动态地添加、删除或更改...

    linux应用程序开发环境.pdf

    - **Makefile**: 定义了如何编译和链接程序。 - **GDB调试器**: GNU Debugger,用于调试程序。 - **配置管理工具**: 如CVS、GIT和SVN,用于版本控制。 - **Eclipse+Cdt**: 集成开发环境及其插件,适合C/C++开发。 - ...

    procmem_linux.tar.gz

    在本例中,我们看到描述中提到使用 `make` 命令,并且指定了 `CROSS_COMPILE` 变量为 `arm-hisiv400-linux-gcc`,这表明这个软件包是为基于ARM架构的Hisilicon HiSilicon V400平台上的Linux系统编译的。 1. **交叉...

    Android内核编译

    Google所提供的内核源代码不仅仅包括标准Linux内核的部分,还包括了与虚拟处理器QEMU和模拟硬件平台Goldfish相关的代码。这部分代码主要用于Android模拟器,使得开发者能够在计算机上模拟真实设备的运行环境。 ####...

    嵌入式学习步骤

    - **Linux内核移植到ARM平台**:实践将Linux内核移植到ARM平台上。 #### 六、嵌入式Linux串口通信 - **目标**:掌握嵌入式系统中串口通信的基本原理和技术。 - **知识点**: - **串行I/O概念**:理解串行通信的...

    嵌入式LINUX学习步骤

    - **gcc使用方法**:学习使用gcc编译器进行C语言程序的编译。 - **gdb调试技术**:掌握使用gdb进行程序调试的方法。 - **Makefile**:理解Makefile的工作原理,并能够编写简单的Makefile文件。 - **程序编写实践**:...

Global site tag (gtag.js) - Google Analytics