首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重定位错误& Linux分发

重定位错误& Linux分发
EN

Stack Overflow用户
提问于 2011-04-27 15:35:38
回答 1查看 1.1K关注 0票数 1

这就是我的目标:我在Linux中开发了软件,我需要在没有源代码的情况下发布它。这样做的目的是创建一个zip文件,其中包含运行可执行文件所需的所有项目。用户将下载压缩,解压缩,双击,软件将在任何基于Linux的机器上启动。对于我无法解释的动机,我不能使用deb/rpm/etc或安装程序。

sw有以下依赖关系:

一些库(由我自己编写,依赖于libraries)

  • OpenCV,),用g++编译,创建.a文件(即共享库中的静态.a,有几个依赖项

)。

我与gcc一起编写了我的程序,并将其链接到:

代码语言:javascript
复制
$ gcc -o my_exe <*.o files> -L<path my_lib> -Wl,--rpath,\$$ORIGIN/lib -lm -lstdc++ -lmy_lib -lopencv

那我就做:

代码语言:javascript
复制
$ ldd my_exe

然后复制./lib中列出的所有库,然后创建.zip。

我在另一台机器上复制zip,ldd my_exe列出的依赖项是满意的,并正确地指向./lib,但是当我启动程序时,我得到以下错误:

代码语言:javascript
复制
$ ./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

怎么了?我的错误在哪里?

一些补充信息:

代码语言:javascript
复制
$ -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.35SMP,64位。我试过的机器也是64位SMP内核2.6。

EN

回答 1

Stack Overflow用户

发布于 2011-10-27 05:54:32

您似乎重新发明了什么样的包管理器(对于.deb、.rpm、.)都在做。你为什么不想做一个真正的包裹。这将使事情变得更简单,更有活力。

而且,由于您使用C++编写代码,您将很难制作一件可以使用不同版本的libstdc++*.so的东西。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5806688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档