当前位置: 技术问答>linux和unix
关于.so文件的软链接问题?
来源: 互联网 发布时间:2017-05-21
本文导语: 我现在在Linux下编译生成一个.so文件,提供给另外一个项目组使用,由于.so文件带版本号,如果我修改后,由于.so文件名也跟的更改,那么使用的地方也要修改,现在我想到的方法是对我提供的.so文件建立软链接。 如...
我现在在Linux下编译生成一个.so文件,提供给另外一个项目组使用,由于.so文件带版本号,如果我修改后,由于.so文件名也跟的更改,那么使用的地方也要修改,现在我想到的方法是对我提供的.so文件建立软链接。
如:针对 Action.so.1.0.0.xxx 文件使用 ln -sf 建立软链接文件 Action.so, 这样一共提供两个.so文件给使用方,此次他们代码中就只针对Action.so进行加载就可以了,所以我修改了代码,版本号和文件名修改,但是使用端无需更改代码,还是直接加载Action.so即可,但是现在的问题是,Action.so文件不是ELF格式的文件,所以加载就报错Action.so不是合法的ELF文件,这个问题如何解决?
初进入Linux开发,所以请问大家此问题有比较好的解决方式吗?
如:针对 Action.so.1.0.0.xxx 文件使用 ln -sf 建立软链接文件 Action.so, 这样一共提供两个.so文件给使用方,此次他们代码中就只针对Action.so进行加载就可以了,所以我修改了代码,版本号和文件名修改,但是使用端无需更改代码,还是直接加载Action.so即可,但是现在的问题是,Action.so文件不是ELF格式的文件,所以加载就报错Action.so不是合法的ELF文件,这个问题如何解决?
初进入Linux开发,所以请问大家此问题有比较好的解决方式吗?
|
以前碰到过一次这样的问题,当时的原因是编译的机器和使用的机器位数不一致,
一个32bit 一个64bit
楼主可以检查下有无该问题。
另外可以执行下面的命令 看下输出有无问题。
# file Action.so
# ldd Action.so
一个32bit 一个64bit
楼主可以检查下有无该问题。
另外可以执行下面的命令 看下输出有无问题。
# file Action.so
# ldd Action.so
|
软链接没有弄好吧,不是你建立软连接,而是使用方根据自己具体目前建立
|
Action.so 这个软链接出问题了,拷贝后看一下是否正常
|
你可以在自己的机器上写个demo看看
|
O mygod, 你有确定你正确的创建的软连接吗~~~ 用"ll"命令查看下就知道是否是个软连接啦~~~
|
建立软连接请用绝对路径!
简单的判断方法:你看看链接文件的颜色是红色的还是蓝色的,红色的就出错了。
ls -la Action.so看看完整的路径是否正确!
简单的判断方法:你看看链接文件的颜色是红色的还是蓝色的,红色的就出错了。
ls -la Action.so看看完整的路径是否正确!