LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2405|回复: 22

请教各位高手一个问题!有关kylix的。

[复制链接]
发表于 2002-11-8 17:10:26 | 显示全部楼层 |阅读模式
为什么我执行在kylix下编译好的程序时,比如:
./test2
./test2: relocation error: ./test2: undefined symbol: initPAnsiStrings
执行不了。而在kylix下run就没有任何问题。
ps:我是一个菜鸟,现在才刚刚学编程,希望各位高手指教一下。
:cool:
 楼主| 发表于 2002-11-12 00:27:02 | 显示全部楼层
唉!怎么没有人理我啊?我是在Mdk9下的。用的是kylix3。
高手请帮忙啊!
发表于 2002-11-12 08:42:46 | 显示全部楼层
用ldd test2查看一下,是不是缺少libqtintf-xxx-qt2.3.so。如果是,作一个链接就完了。
 楼主| 发表于 2002-11-12 15:31:37 | 显示全部楼层

再帮一下忙

ldd test2
        libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x40025000)
        libpthread.so.0 => /lib/i686/libpthread.so.0 (0x400f0000)
        libdl.so.2 => /lib/libdl.so.2 (0x40104000)
        libc.so.6 => /lib/i686/libc.so.6 (0x40107000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
那应该怎么改啊。联接到哪啊?
发表于 2002-11-12 18:28:49 | 显示全部楼层
看来不是动态库的问题,我也没有办法。
发表于 2002-11-12 22:40:40 | 显示全部楼层
试试这个,这是我从linux公社看来的:
编好的程序在 Kylix 下编译 运行通过,但脱离 Kylix 无法独立运行.
错误信息:
./Project1: relocation error: ./Project1: undefined symbol: initPAnsiStrings

解决方法:
建立一个脚本文件,内容如下:
######文件名#######
#startpro
#!/bin/bash
LD_LIBRARY_PATH="$HOME/kylix3/binLD_LIBRARY_PATH"
export LD_LIBRARY_PATH
./Project1
保存。

chmod 755 startpro


执行 ./startpro

OK!
 楼主| 发表于 2002-11-16 10:04:00 | 显示全部楼层

好像还是不行

老是出现bash: ./startpro: cannot execute binary file。 我已经把$HOME/kylix3/bin改成我的安装文件夹/bin了。还是不行。但是我的情况的确是像上面所说的一样。
究竟是哪里有问题呢?
发表于 2002-11-16 20:28:39 | 显示全部楼层
startpro是脚本文件,怎么会提示不能执行二进制文件(cannot execute binary file),你是怎么执行脚本程序的?
你还可以这样试一下:
假设你的kylix3安装在/usr/local下,做一个链接:
ln -s /usr/local/kylix3/bin/libqtintf-6.9.0-qt2.3.so    /usr/lib/libqtintf-6.9-qt2.3.so
如果你用的是kylix2或其它版本,则要根据你的系统实际情况更改路径和文件名。
如果以上方法都不行,干脆把libqtintf-6.9-qt2.3.so复制到/usr/lib下去试试运气。
 楼主| 发表于 2002-11-16 21:01:37 | 显示全部楼层

第一个方法是可行的!

经过kj501大兄的提点后,我发现我没有把“#”改成"#",所以就不可以运行。现在改回来就可以了。但我有一个问题。那么说每一个程序编好后都要还写一个startpro么?


非常感谢kj501大兄!
发表于 2002-11-17 09:42:52 | 显示全部楼层
其实看看我回的贴子你就应该明白,这主要是kylix编译的程序在执行时要用到kylix安装目录下的libqtintf-6.9.0-qt2.3.so文件,而这个文件的路径不在用户和系统的PATH范围内,因此编译好的程序在运行时只能到系统默认的/usr/lib下去找这个文件,自然是找不到了。在这个意义上说,libqtintf-6.9.0-qt2.3.so应该是一个动态库,kylix在安装时应该把它放在/usr/lib下,却莫名奇妙地放在kylix/bin下,最让我感到奇怪的是用ldd命令检查编译好的程序的动态库,尽然不提示缺少libqtintf-6.9.0-qt2.3.so这个文件。所以我觉得kylix的文件格式可能与众不同,同时我也认为如果要将编译好的程序用到一台没有安装kylix的机器上,肯定会提示缺少文件,至少会提示缺少libqtintf-6.9.0-qt2.3.so。如何解决这个问题,我没有经验,只能到时候再说。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表