LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 922|回复: 6

怎么编出个公用的动态库?

[复制链接]
发表于 2005-12-19 13:47:57 | 显示全部楼层 |阅读模式
我用automake编成了一个动态库,被装到了/usr/local/lib/...下
再编另一个软件,使用这个库,链接时用-L指定...目录,能编出来程序。但运行时说找不到库。只能su后ldconfig了...目录,才行的。
我是还automake得不对?没写什么参数,所以...目录没成为系统识别的:ask
发表于 2005-12-19 16:31:11 | 显示全部楼层
看看 /etc/ld.so.conf 里有没有 /usr/local/lib
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-12-19 17:11:38 | 显示全部楼层
没有。不过即使有是不是也不成啊,因为建了一层子目录
另外,也不知道,如果不是root,想安装到自己的目录,怎么设环境变量,然后运行configure还是怎么着
回复 支持 反对

使用道具 举报

发表于 2005-12-19 18:57:48 | 显示全部楼层
you may set the `LD_LIBRARY_PATH' environment variable manually, which doesn't require root privileges.

eg:


$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/ds/lib

then you should be able to link libraries under ~/ds/lib

$ gcc exam01.c -o exam01 -g -O2 -Wall -L ~/ds/lib -ldemo
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-1-18 13:16:45 | 显示全部楼层
但是作为一个程序的安装,不应该要求用户再手动添加路径啊。还是应该在编译时就把路径加到系统里了嘛
回复 支持 反对

使用道具 举报

发表于 2006-1-19 13:34:27 | 显示全部楼层
LD_LIBRARY_PATH 不建议使用。那是为了开发和调试方便才设立的。
你用的是REDHAT系例吧?
/usr/local/lib 却省是不在搜索范围内的,把它加到 /etc/ld.so.conf 即可。
回复 支持 反对

使用道具 举报

发表于 2006-1-19 17:25:39 | 显示全部楼层
请看Linux1.0核心游记,有详细的描述还有静态库的编写!
A3、函数库的编写

   A3-1 静态函数库的编写

    A3-1-1 包含算法的各个文件及Makefle
    A3-1-2 测试静态函数库的程序及Makefile
    A3-1-3 静态库编译情况
    A3-1-4 主程序与静态库连接

   A3-2 动态函数库的编写

    A3-2-1 动态库编译情况
    A3-2-2 使用动态装载器

   A3-3 动态/静态函数库优点

    A3-3-1 静态库优点
    A3-3-2 动态库优点

下载地址:http://www.linuxabc.net/book/bookinfo.php?id=362
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表