`
jak47
  • 浏览: 72273 次
  • 性别: 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字符设备驱动实验代码

    a) cat /proc/devices看看有哪些编号已经被使用,我们选一个没有使用的XXX。 b) insmod memdev.ko c) 通过"mknod /dev/memdev0 c XXX 0"命令创建"/dev/memdev0"设备节点。 d) 交叉编译app-mem.c文件,下载并执行 ...

    linux全志R16的linux系统编译的资料_20170502_1655.7z

    全志R16平台编译linux系统V1.0.txt 2017/4/11 13:36 (编译请使用编译android的lichee的选项编译生成的.config文件,不然直接编译会报错!!!!) rootroot@cm-System-Product-Name:/home/wwt/linux_r16$ tar...

    Linux内核驱动模块编程指南 (内核版本2.2, 2.4)The Linux Kernel Module Programming Guide CHS

    多个源代码文件构成的内核模块使用的Makefile 4-1. chardev.c 4-2. 支持多版本内核的宏 5-1. procfs.c 6-1. procfs.c 7-1. chardev.c 7-2. chardev.h 7-3. ioctl.c 8-1. procfs.c 9-1. sleep.c 10-1. print_string....

    LINUX操作系统(电子教案,参考答案)

    主要包括Linux的基本概念和操作,Linux的树型结构,Linux的文本编辑,Linux的安装和启动,用户管理,Shell编程技术,进程管理,C编译器,系统扩充,维护与监视,Linux的图形界面,网络的基本概念与设置,Linux在网络...

    Linux程序设计 第4版.haozip01

    6.1 用curses函数库进行编译 175 6.2 curses术语和概念 176 6.3 屏幕 178 6.3.1 输出到屏幕 179 6.3.2 从屏幕读取 180 6.3.3 清除屏幕 180 6.3.4 移动光标 180 6.3.5 字符属性 181 6.4 键盘 183 6.4.1 键盘...

    Linux程序设计 第4版.haozip02

    6.1 用curses函数库进行编译 175 6.2 curses术语和概念 176 6.3 屏幕 178 6.3.1 输出到屏幕 179 6.3.2 从屏幕读取 180 6.3.3 清除屏幕 180 6.3.4 移动光标 180 6.3.5 字符属性 181 6.4 键盘 183 6.4.1 键盘...

    基于mediastreamer2的网络电话实现流程以及源码库

    首先接到这一个项目,说是要用mediastreamer2做一个网络电话。之前也是从来没有接触过。于是首先开始在百度中搜索一下需要哪些东西,以及那些步骤。最后大致了解了一下,做这个项目最终要的就是需要移植好多的库,每...

    wireshark源码

    将修改过的Makefile.common,Makefile.am,moduleinfo.nmake,moduldeinfo.h,Makefile.nmake及packet-rdp.c文件考到"rdp"文件夹下,然后进行编译,rdp插件自动生成完整,就可以正常工作了。 1. 解析协议细节 现在...

    Linux管理员指南

    编译Linux内核 131 10.1 内核到底是什么 131 10.2 获取内核源代码 132 10.2.1 选择正确的版本 133 10.2.2 解压缩内核源代码 133 10.3 建立内核 134 10.3.1 make xconfig过程 135 10.3.2 内核...

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

    -国嵌内核驱动进阶班-1-2(Linux内核源代码).avi -国嵌内核驱动进阶班-1-3(Linux内核配置与编译).avi -国嵌内核驱动进阶班-1-4(Linux内核模块开发).avi -国嵌内核驱动进阶班-1-5(必修实验).avi -第2天(U-...

    最新版busybox-1.19.4

    用Busybox创建nfs文件系统 1、解压busybox-1.19.4.tar.bz2 修改Makefilez中的ARCH和CROSS_COMPILE与本机的路径一致: CROSS_COMPILE ?= /opt/crosstool/bin/arm-s3c2410-linux-gnu- ... ARCH ?= arm 2、编译...

    uboott移植实验手册及技术文档

    fs2410.c代码如下: #if defined(CONFIG_CMD_NAND) typedef enum { NFCE_LOW, NFCE_HIGH } NFCE_STATE; static inline void NF_Conf(u16 conf) { S3C2410_NAND * const nand = S3C2410_GetBase_NAND(); ...

    rtl8188FU_linux_v5.2.11.1_22924.20170703.tar.gz

    1、01原始编译全志r16平台tinav2.5系统: rootroot@cm88:~$ cd /home/wwt rootroot@cm88:/home/wwt$ rootroot@cm88:/home/wwt$ md5sum tinav2.5_orig_r16repack_20171214_1114.tar.gz aa13de7313f393ca25375d9802a...

    疯狂内核之——内核初始化

    1.1 上电 2 1.2 BIOS时代 3 1.3 内核引导程序 5 2 内核映像的形成 8 2.1 MakeFile预备知识 9 2.1.1 Makefile书写规则 9 2.1.2 Makefile变量 10 2.1.3 条件判断 14 2.1.4 函数 17 2.1.5 隐含规则 17 2.1.6 定义模式...

    r58_evb_sc5806v4加载TP成功修改config 20160815 2026.7z

    lrwxrwxrwx 1 rootroot rootroot 105 7月 28 15:33 proc.c -&gt; /mnt/king_folder/studio/sdkbuild/R58/lichee/linux-3.4/modules/eurasia_km/services4/srvkm/env/linux/proc.c lrwxrwxrwx 1 rootroot rootroot 113 7...

    LINUX系统开发技术详解---基于ARM

    3.3 二进制代码工具的使用................................................................................................. 52 3.3.1 GNU Binutils工具介绍....................................................

    rpi-gpio_input:用于 Raspberry Pi GPIO 的基于中断的 evdev 输入驱动程序

    为您在 Pi 上运行的 Linux 版本克隆 Raspberry Pi Linux 内核源代码: $ mkdir raspi && cd raspi $ git clone -b rpi-3.18.y https://github.com/raspberrypi/linux.git 从您的 Pi 复制 /proc/config.gz 并将其...

    用matlab写一段代码-caffe64:无需依赖咖啡因替代

    您是否在2006年以后生产的Intel或AMD处理器上使用64位linux (对不起,对于OSX,您需要更改系统调用)? (尝试grep sse3 /proc/cpuinfo ) 您的系统是否有/dev/urandom ? 您有12KB或更多的磁盘空间吗? 如果是这样...

    mini2440国嵌视频教程+课件+工具+软件+镜像+教程源码下载地址

    -国嵌内核驱动进阶班-1-2(Linux内核源代码).avi -国嵌内核驱动进阶班-1-3(Linux内核配置与编译).avi -国嵌内核驱动进阶班-1-4(Linux内核模块开发).avi -国嵌内核驱动进阶班-1-5(必修实验).avi -第2天(U-...

    linux网路编程 中文 23M 版

    第1 章Linux操作系统概述................... .......................................................................... 2 1.1 Linux发展历史........................................................ 2 ...

Global site tag (gtag.js) - Google Analytics