免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1173 | 回复: 0
打印 上一主题 下一主题

[C] OracleCallerInterface C语言接口的编译问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-01-15 15:08 |只看该作者 |倒序浏览
我在linux下安装了oracle817并使用客户端的库编译我的应用程序,我使用的是从oracle网站上面找的makefile, makefile我附在贴子后面。 我在编译的时候报告找不到libsql, 我在系统里面搜索也找不到libsql,只有libsql8,于是我把makefile里面的LLIBSQL= -lsql 改成了 LLIBSQL= -lsql8,这样可以make了,但是之后我在使用makefile提供的静态编译方法也失败了,报告如下

[fox@WIPSS_SERVER mp20]$ make mpasserver
gcc tmp/mpasserver.o -Wall -g -Iinclude -Llib  -L/oracle/ora817/lib/ -L/oracle/ora817/rdbms/lib /oracle/ora817/rdbms/lib/ssdbaed.o /oracle/ora817/rdbms/lib/kpudfo.o /oracle/ora817/rdbms/lib/kpuadef.o  `sed -e 's/-ljava//g' /oracle/ora817/lib/ldflags`     -lnsgr8 -lnzjs8 -ln8 -lnl8 -lnro8 `sed -e 's/-ljava//g' /oracle/ora817/lib/ldflags`     -lnsgr8 -lnzjs8 -ln8 -lnl8 -lclient8  -lvsn8 -lwtc8 -lcommon8 -lgeneric8 -lwtc8 -lmm -lnls8  -lcore8 -lnls8 -lcore8 -lnls8  `sed -e 's/-ljava//g' /oracle/ora817/lib/ldflags`     -lnsgr8 -lnzjs8 -ln8 -lnl8 -lnro8 `sed -e 's/-ljava//g' /oracle/ora817/lib/ldflags`     -lnsgr8 -lnzjs8 -ln8 -lnl8 -lclient8  -lvsn8 -lwtc8 -lcommon8 -lgeneric8  -ltrace8 -lnls8  -lcore8 -lnls8 -lcore8 -lnls8  -lclient8  -lvsn8 -lwtc8 -lcommon8 -lgeneric8 -lnls8  -lcore8 -lnls8 -lcore8 -lnls8    `cat /oracle/ora817/lib/sysliblist` `if [ -f /usr/lib/libsched.so ] ; then echo -lsched ; else true; fi`  -ldl -lm  -ldl `sed -e 's/-ljava//g' /oracle/ora817/lib/ldflags`     -lnsgr8 -lnzjs8 -ln8 -lnl8 -lnro8 `sed -e 's/-ljava//g' /oracle/ora817/lib/ldflags`     -lnsgr8 -lnzjs8 -ln8 -lnl8 `sed -e 's/-ljava//g' /oracle/ora817/lib/ldflags`     -lnsgr8 -lnzjs8 -ln8 -lnl8 -lnro8 `sed -e 's/-ljava//g' /oracle/ora817/lib/ldflags`     -lnsgr8 -lnzjs8 -ln8 -lnl8 `sed -e 's/-ljava//g' /oracle/ora817/lib/ldflags`     -lnsgr8 -lnzjs8 -ln8 -lnl8 -lnro8 `sed -e 's/-ljava//g' /oracle/ora817/lib/ldflags`     -lnsgr8 -lnzjs8 -ln8 -lnl8 `sed -e 's/-ljava//g' /oracle/ora817/lib/ldflags`     -lnsgr8 -lnzjs8 -ln8 -lnl8 -lnro8 `sed -e 's/-ljava//g' /oracle/ora817/lib/ldflags`     -lnsgr8 -lnzjs8 -ln8 -lnl8 `sed -e 's/-ljava//g' /oracle/ora817/lib/ldflags`     -lnsgr8 -lnzjs8 -ln8 -lnl8 -lnro8 `sed -e 's/-ljava//g' /oracle/ora817/lib/ldflags`     -lnsgr8 -lnzjs8 -ln8 -lnl8 -lsql8 -lsql8   -lrssocket -lrsio -lrssignal -lapp -lstrings -lpthr -ldebug -lrt -ldl -lpthread -lm -lputil -ldatetime -ldbtools -o bin/mpasserver
/oracle/ora817/lib//libn8.a(nae.o): In function `naectst':
nae.o(.text+0x644): undefined reference to `naecta'
nae.o(.text+0x6df): undefined reference to `naecta'
nae.o(.text+0x730): undefined reference to `naecta'
nae.o(.text+0x7be): undefined reference to `naecta'
/oracle/ora817/lib//libn8.a(nae.o): In function `naeetst':
nae.o(.text+0x85: undefined reference to `naeeta'
nae.o(.text+0x8f0): undefined reference to `naeeta'
nae.o(.text+0x924): undefined reference to `naeeta'
nae.o(.text+0x977): undefined reference to `naeeta'
nae.o(.text+0xa1: undefined reference to `naeeta'
/oracle/ora817/lib//libn8.a(nae.o): In function `naeccn':
nae.o(.text+0xda2): undefined reference to `naectn'
nae.o(.text+0xda: undefined reference to `naectc'
nae.o(.text+0xdf4): undefined reference to `naecta'
nae.o(.text+0xe1d): undefined reference to `naecta'
/oracle/ora817/lib//libn8.a(nae.o): In function `naeccom':
nae.o(.text+0x11fc): undefined reference to `naecta'
nae.o(.text+0x121b): undefined reference to `naectn'
/oracle/ora817/lib//libn8.a(nae.o): In function `naecinit':
nae.o(.text+0x1364): undefined reference to `naectc'
nae.o(.text+0x14bf): undefined reference to `naectc'
nae.o(.text+0x14cb): undefined reference to `naectn'
nae.o(.text+0x14d5): undefined reference to `naecti'
nae.o(.text+0x1503): undefined reference to `naectn'
...
...
...
很多未定义的符号,这些符号确实是为定义的,我使用nm把oracle函数库搜索遍了也没有,请问我的MAkefile有什么问题,应该怎么解决,哪位能share给我一份oracle817for linux的makefile, 不尽赶紧。 我的makefile如下
    ——————————————————————————————————
#
# Example for building demo OCI programs:
#
# 1. All OCI demos:
#
#    make -f oci_sample.mk demos
#
# 2. A single OCI demo:
#
#    make -f oci_sample.mk build EXE=demo
#    e.g. make -f oci_sample.mk build EXE=readgeom
#
# 3. A single OCI demo with static libraries:
#
#    make -f oci_sample.mk build_static EXE=demo
#    e.g. make -f oci_sample.mk build_static EXE=readgeom
#
# 4. To re-generate shared library:
#
#    make -f oci_sample.mk generate_sharedlib
#
#
# NOTE: 1. ORACLE_HOME must be either:
#                   . set in the user's environment
#                   . passed in on the command line
#                   . defined in a modified version of this makefile
#
#       2. If the target platform support shared libraries (e.g. Solaris)
#          look in the platform specific documentation for information
#          about environment variables that need to be properly
#          defined (e.g. LD_LIBRARY_PATH in Solaris).
#


include $(ORACLE_HOME)/rdbms/lib/env_rdbms.mk


RDBMSLIB=$(ORACLE_HOME)/rdbms/lib/

LDFLAGS=-L$(LIBHOME) -L$(ORACLE_HOME)/rdbms/lib
LLIBPSO=`cat $(ORACLE_HOME)/rdbms/lib/psoliblist`

# directory that contain oratypes.h and other oci demo program header files
INCLUDE= -I$(ORACLE_HOME)/rdbms/demo -I$(ORACLE_HOME)/rdbms/public -
I$(ORACLE_HOME)/plsql/public -I$(ORACLE_HOME)/network/public -I.

#
CONFIG = $(ORACLE_HOME)/rdbms/lib/config.o

# module to be used for linking with non-deferred option

# flag for linking with non-deferred option (default is deferred mode)
NONDEFER=false

# libraries for linking oci programs
OCISHAREDLIBS=$(TTLIBS) $(DEF_ON) $(LLIBTHREAD)
OCISTATICLIBS=$(STATICTTLIBS) $(LLIBTHREAD)

PSOLIBLIST=$(ORACLE_HOME)/rdbms/lib/psoliblist
CLEANPSO=rm -f $(PSOLIBLIST); $(GENPSOLIB)

DOLIB=$(ORACLE_HOME)/lib/liborcaccel.a
DUMSDOLIB=$(ORACLE_HOME)/lib/liborcaccel_stub.a
REALSDOLIB=/usr/lpp/orcaccel/liborcaccel.a


LLIBSQL= -lsql
PROLDLIBS= $(LLIBSQL) $(TTLIBS)

DEMO_MAKEFILE = oci_sample.mk

DEMOS = readgeom writegeom

OBJECTS=geomops.o readgeom.o writegeom.o

OBJ1=geomops.o readgeom.o
OBJ2=writegeom.o

demos: $(DEMOS)

generate_sharedlib:
        $(SILENT)$(ECHO) "Building client shared library ..."
        $(SILENT)$(ECHO) "Calling script $$ORACLE_HOME/bin/genclntsh ..."
        $(GENCLNTSH)
        $(SILENT)$(ECHO) "The library is $$ORACLE_HOME/lib/libclntsh.so... DONE"

$(DEMOS):
        $(MAKE) -f $(DEMO_MAKEFILE) build EXE=$@

readgeom: $(OBJ1)

writegeom(OBJ2)

$(OBJ1): readgeom.c geomops.c readgeom.h geomops.h

$(OBJ2): writegeom.c writegeom.h

build: $(LIBCLNTSH) $(OBJECTS)
        $(ECHODO) $(CC) $(LDFLAGS) -o readgeom $(OBJ1) $(OCISHAREDLIBS)
        $(ECHODO) $(CC) $(LDFLAGS) -o writegeom $(OBJ2) $(OCISHAREDLIBS)

build_static: $(OBJECTS)
        $(ECHODO) $(CC) $(LDFLAGS) -o readgeom $(OBJ1) $(SSDBED) $(DEF_ON) \
        $(OCISTATICLIBS)
        $(ECHODO) $(CC) $(LDFLAGS) -o writegeom $(OBJ2) $(SSDBED) $(DEF_ON) \
        $(OCISTATICLIBS)
clean:
        $(RM) -f $(DEMOS) *.o *.so



———————————————————————————————————
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP