免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2250 | 回复: 0
打印 上一主题 下一主题

linux共享库版本化编译连接的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-07-23 18:22 |只看该作者 |倒序浏览
自己找的一个例子代码如下:
[code=C/C++]foo.c

void foo_v1(int f) {
     printf("foo_v1\n");
}
__asm__(".symver foo_v1,foo@@VERSION_1.0");[/code]
[code=C/C++]main.c
#include <stdio.h>

void foo(int);

int main(void) {
    foo(100);
    return 0;
}[/code]
[code=C/C++]1.ver
VERSION_1.0{
      global:
      foo;
};
[/code]

[code=C/C++]Makefile
all: v1

libfoo.so.1.0 : foo.c
        gcc -shared -fPIC -o libfoo.so.1.0 -Wl,--soname='libfoo.so' -Wl,--version-script=1.ver foo.c

v1: main.c libfoo.so.1.0.0
        ln -sf libfoo.so.1.0  libfoo.so
        gcc -Wall -o v1 -lfoo -L. main.c
.PHONY:clean
clean:
        rm -f libfoo* v1
[/code]
在编译时我有些不懂不过现在是正确的,我想按照下面说的进行修改
1.soname应该加大版本号为libfoo.so.1
2.ln软连接按照网上资料应该是ln -sf soname linkname(即ln -sf libfoo.so.1 libfoo.so)
如果按照上述修改,在编译连链接时报错为[code=C/C++]/usr/bin/ld: cannot find -lfoo
collect2: ld returned 1 exit status
make: *** [v1] Error 1
[/code]
求大神指点一下怎么修改?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP