开发者社区> 问答> 正文

动态库文件编译时报连接错误,aix环境下aCC、xlc编译器,求大神,,,?报错

makefile文件中使用:

CPP_COMP=xlc++_r
CPPFLAGS=-q64 -bh:5  -lC -g -qcpluscmt -ma -D_THREAD_SAFE -DAIX -D__BIGMSGQUEUE_ENABLED -DPLATFORM_TYPE=PLATFORM_TYPE_AIX -DMACHINE_WORD=64 -lhmu

OBJS = pubinterface.o pubinterHash.o
all : libinterpubfun2.so
libinterpubfun2.so:$(OBJS)
        $(CPP_COMP) $(CPPFLAGS) $(INCLUDE) -b -o $@ $(OBJS)

编译时报错:

        xlc++_r  -q64 -bh:5  -lC -g -qcpluscmt -ma -D_THREAD_SAFE -DAIX -D__BIGMSGQUEUE_ENABLED -DPLATFORM_TYPE=PLATFORM_TYPE_AIX -DMACHINE_WORD=64 -lhmu -I.  -o libinterpubfun2.so pubinterface.o pubinterHash.o 

ld: 0711-317 ERROR: Undefined symbol: .main
ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information.
make: The error code from the last command is 8.

展开
收起
爱吃鱼的程序员 2020-06-22 18:20:23 859 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    添加Oracle,OCI接口共享文件即可,开始没找到。

     -lclntsh-locci-locci9 -L$(ORA_HOME)/lib

    自问自答-_-///

    感谢 猫哥,李勇2.

    cppflags里面哪个是表示生成动态库的啊?Undefinedsymbol 缺符号,好好看看Makefile文件,从你贴出来的无法定位

    cppflags里-g标识生成动态库。

    修改makefile文件后,cppflags里修改 -qmkshrobj上面的.main错误没有了。

    但是提示,估计是什么库文件没有包含,找不到是什么库?还有find当前目录,也没发现那个文件使用了这些个方法:

    ld:0711-317ERROR:Undefinedsymbol:.OCIInitialize
    ld:0711-317ERROR:Undefinedsymbol:.SQLEnvGet
    ld:0711-317ERROR:Undefinedsymbol:.SQLSvcCtxGet
    ld:0711-317ERROR:Undefinedsymbol:.OCILobGetLength
    应该是头文件缺失,具体缺什么文件还得找找,,,

    2020-06-22 18:20:41
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
15分钟打造你自己的小程序 立即下载
小程序 大世界 立即下载
《15分钟打造你自己的小程序》 立即下载