【发布时间】:2011-12-16 18:33:23
【问题描述】:
我做了一个使用共享对象的简单程序,用dlopen() 打开它。我还编译并链接了共享对象,如下所示:
gcc -o libmylib.so libmylib.c -shared -fPIC -Wall
gcc -o program program.c -L. -lmylib -ldl -Wall
当我第一次尝试运行该程序时,它会说类似
cannot open libmylib.so: no such file or directory
所以我搜索了互联网,发现我必须将我的共享对象复制到/lib/i386-linux-gnu/ 才能运行程序。所以我这样做了,它奏效了,但后来我尝试以其他方式做到这一点,因此我从/lib/i3686-linux-gnu/ 目录中删除了libmylib.so。现在,当我尝试运行该程序时,它没有显示任何错误,但一直说Segmentation fault。共享对象明明是找不到了,但是不复制怎么链接呢?
我使用的是 Ubuntu 11.10
【问题讨论】:
-
如果您以 root 身份运行
ldconfig,分段错误会消失吗?
标签: linux gcc linker shared-libraries