重定位错误&Linux sw分配

| 这是我的目标:我在Linux上开发了软件,我需要不带源代码就分发它。这个想法是创建一个zip文件,其中包含运行可执行文件的所有必要项目。用户将下载该zip,解压缩并双击,然后该软件将在任何基于Linux的计算机上启动。对于我不想解释的动机,我不能使用deb / rpm / etc或安装程序。 sw具有以下依赖性: 一些库(由我自己编写,取决于OpenCV),已使用g ++编译,创建了.a文件(即静态库) 共享库中具有多种依赖关系的OpenCV 我用gcc编译程序,并将其链接到:
$ gcc -o my_exe <*.o files> -L<path my_lib> -Wl,--rpath,\\$$ORIGIN/lib -lm -lstdc++ -lmy_lib -lopencv
然后我做:
$ ldd my_exe
然后我复制./lib中列出的所有库,并创建.zip。 我将zip复制到另一台机器上,满足
ldd my_exe
列出的依赖关系,并且正确指向./lib,但是当我启动程序时,出现以下错误:
$ ./my_exe: relocation error: lib/libglib-2.0.so.0: symbol strncmp, version GLIBC_2.2.5 not defined in file libc.so.6 with link time reference
怎么了?我的错误在哪里? 一些其他信息:
$ -bash-3.2$ nm -D lib/libc.so.6  |grep strncmp
0000000000083010 T strncmp
$ -bash-3.2$ strings lib/libc.so.6 |grep GLIBC_2.2
GLIBC_2.2.5
GLIBC_2.2.6
我正在使用gcc 4.4.5,Ubuntu和2.6.35 SMP内核,64位。我尝试的计算机也是64位SMP内核2.6。     
已邀请:
您似乎重新发明了包管理器(用于.deb,.rpm等)的功能。您为什么不想制作一个真正的包裹。这将使事情变得更简单,更强大。 而且由于您使用C ++编写代码,因此您将很难制作出可以在不同版本的ѭ5上使用的东西     

要回复问题请先登录注册