您的位置:程序门 -> linux/unix社区 -> 程序开发区



请教一个关于链接库的问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


请教一个关于链接库的问题
发表于:2007-04-26 17:20:23 楼主
我要将自己的代码编译成一个可以执行程序,中间要用到库里面的函数,我在makefile里面也指明了需要链接的库文件,如下所示:
obj1         =logininfo.o  

all:   clean   login

login:   $(obj1)
                $(echo)
                $(ecc)   -l$(libdir)   -lpub   -lmqm   -lmqserver   -o   $@   $(obj1)
                $(echo)
编译时候没有报任何错。

可执行程序名也生成了,但是当我运行的时候却报错:
could   not   load   program   login:
symbol   resolution   failed   for   /home/ap/cics/lib/libmqm.a(libmqm.o)   because:
                symbol   xcsffsts   (number   82)   is   not   exported   from   dependent
                    module   /home/ap/cics/lib/libmqmcs.a(shr.o).
                symbol   xcsffst   (number   83)   is   not   exported   from   dependent
                    module   /home/ap/cics/lib/libmqmcs.a(shr.o).
                symbol   xcsEXECprogram   (number   102)   is   not   exported   from   dependent
                    module   /home/ap/cics/lib/libmqmcs.a(shr.o).
                symbol   xcsallocatequickcellblock   (number   122)   is   not   exported   from   depen
dent
                    module   /home/ap/cics/lib/libmqmcs.a(shr.o).
                symbol   xcscheckprocess   (number   154)   is   not   exported   from   dependent
                    module   /home/ap/cics/lib/libmqmcs.a(shr.o).
system   error:   error   0

我以为是没有包含libmqmcs.a呢,结果加在makefile里面还是一样。

求高手解答,解答。谢谢了^_^
发表于:2007-04-27 11:24:441楼 得分:0
是不是aix系统?
发表于:2007-04-27 13:49:432楼 得分:0
印象中.a文件是ar命令生成的.打包后的.a文件.编译选项-l链接的是libxxxx.so   so文件在libpath目录下找.如果不是.so文件.编译的时候不要加-l选项.
不知道对不对
发表于:2007-04-27 17:10:183楼 得分:0
回woso(我是我):
对的,是aix系统

回wflyfox(田飞):
你说的是正确的,我也和你的观点一样,而且我一开始也是这样做的。不过还是报错说我调用的函数找不到。最后才试试-l选项,结果编译成功。
发表于:2007-04-28 10:27:494楼 得分:0
已经解决,是libmqserver.a有问题
发表于:2007-04-28 12:29:175楼 得分:0
是什么问题?   说说
发表于:2007-05-08 15:51:066楼 得分:0
真正的问题没有找对。结果还是环境问题,编译都是32位的,但是当执行有个shell以后(这个shell是export一些informix的环境变量,当中有64位的)才造成这种情况。


快速检索

最新资讯
热门点击