免费注册 查看新帖 |

Chinaunix

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

[C] linux下c编译遇到问题--急急急!编译好了,执行时memory fault了 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-12-10 16:56 |只看该作者 |倒序浏览
原来Unix上的程序现在迁移到linux上,运行时出错

我运行的命令:
gcc -o getnonfixctl getnonfixctl.c -l $ORACLE_HOME/precomp/public


系统报错如下:
getnonfixctl.c:163:19: sqlca.h: No such file or directory
getnonfixctl.c: In function `sql_error':
getnonfixctl.c:385: error: `sqlca' undeclared (first use in this function)
getnonfixctl.c:385: error: (Each undeclared identifier is reported only once
getnonfixctl.c:385: error: for each function it appears in.)
getnonfixctl.c: In function `main':
getnonfixctl.c:470: error: `sqlca' undeclared (first use in this function)

在getnonfixctl.c中有包含sqlca.h,代码如下:


#include <sqlca.h>

到底是什么问题啊?难道包含sqlca.h要写全路径吗?

[ 本帖最后由 visorqw_cu 于 2009-12-11 11:58 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-12-10 17:08 |只看该作者

论坛徽章:
0
3 [报告]
发表于 2009-12-10 17:11 |只看该作者
ORACLE_HOME正确定义了吗,目录下有要的头文件吗。
ls $ORACLE_HOME/precomp/public
能看见sqlca.h吗?

-l是-I(大写i)还是-l(小写L),确认一下吧。

论坛徽章:
0
4 [报告]
发表于 2009-12-10 17:22 |只看该作者
$ORACLE_HOME定义了,
ls $ORACLE_HOME/precomp/public中有sqlca.h文件

-l 是小写的L

论坛徽章:
0
5 [报告]
发表于 2009-12-10 18:41 |只看该作者
改成大写的i,就是把$ORACLE_HOME/precomp/public加到头文件查找路径里去。
也就是到这里面去找sqlca.h

详细参见 man gcc

论坛徽章:
0
6 [报告]
发表于 2009-12-10 21:59 |只看该作者
I 和 l 就这么难区分么……

论坛徽章:
0
7 [报告]
发表于 2009-12-11 09:17 |只看该作者
抱歉,我定义的User使用shell是bash,结果profile用了.profile,导致oracle_home找不到
现在已经修正,同时把i改称I,运行报错如下:
/tmp/ccogUgiB.o(.text+0x4a): In function `sql_error':
: undefined reference to `sqlglm'
/tmp/ccogUgiB.o(.text+0xd1): In function `sql_error':
: undefined reference to `sqlcxt'
/tmp/ccogUgiB.o(.text+0x433): In function `main':
: undefined reference to `sqlcxt'
/tmp/ccogUgiB.o(.text+0x643): In function `main':
: undefined reference to `sqlcxt'
/tmp/ccogUgiB.o(.text+0x6f6): In function `main':
: undefined reference to `sqlcxt'
/tmp/ccogUgiB.o(.text+0xb23): In function `main':
: undefined reference to `sqlcxt'
/tmp/ccogUgiB.o(.text+0x122b): more undefined references to `sqlcxt' follow
collect2: ld returned 1 exit status


好像是无法调用oracle下的一些函数,是不是oracle要特别安装一些什么东西啊?
感谢各位指导,新手刚入门linux,多多指导

论坛徽章:
0
8 [报告]
发表于 2009-12-11 09:33 |只看该作者
把 INCLUDE= -I$(ORACLE_HOME)/precomp/public\
         -I${ORACLE_HOME}/rdbms/public\
LIBORA1  = -L${ORACLE_HOME}/lib/ -lclntsh -ldl
LIBORA2 =  -L/usr/lib32 -lm -lc -ldl
这些包括进去应该就可以了,还有如果你不是在oracle用户下编译的话,一定要把你编译的用户加入oracle用户所在的组

论坛徽章:
0
9 [报告]
发表于 2009-12-11 09:34 |只看该作者
文件内要写头文件
#include <sqlca.h>

论坛徽章:
0
10 [报告]
发表于 2009-12-11 10:20 |只看该作者
我修改指令为:
  gcc -o getnonfixctl getnonfixctl.c -I $ORACLE_HOME/precomp/public  -I${ORACLE_HOME}/rdbms/public -L${ORACLE_HOME}/lib/ -lclntsh -ldl -L/usr/lib32 -lm -lc -ldl

运行的时候显示对rdbms没权限,赋予权限后可以成功编译。

感谢各位大虾
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP