静态库和动态库

来源:互联网 发布:淘宝开店认证在哪里 编辑:程序博客网 时间:2024/05/18 01:55

[问题]  
[解答]  


[问题]   Linux 静态库转换为动态库 (xxx.a -> xxx.so)

[解答]   这种方法不是一定能成功的, 有些symbol从静态库转为动态库的时候, 会失效, 从而导致转换失败

*.a files are just archives of .o object files, so all you need to do is unpack the archive and repackage them as a shared object (.so ).
cd ./
ar -x xxx.a
gcc -shared *.o -o xxx.so

[问题] linux将 /usr/local/lib/ 目录添加到ld搜索目录的方法
[解答] sudo vi /etc/ld.so.conf.d/usr_local_lib.conf
输入下面这行内容
/usr/local/lib/
执行"sudo ldconfig"使得上面的更改生效


[问题]  unix下查看静态库和动态库是32位还是64位
[解答]  $ objdump -a libmpfr.a

          $ file /lib/libc.so.7

[问题] github 上下载的ZIP包在Linux下用unzip解压缩,总会出错,提示 symlink error: File name too long

[解答] 用busybox自带的unzip解压没问题

REF: http://lumte.com:84/archives/2014/07/11/433.html


[问题] Linux/Unix 动态连接库路径设置相关的环境变量

[解答] LD_LIBRARY_PATH 查看该环境变量的值: echo ${LD_LIBRARY_PATH}



[问题] Linux/Unix 动态连接库路径设置相关的命令

[解答] ldconfig

用一个数学的函数表达一下: f(/etc/ld.so.conf) = /etc/ld.so.cache

/etc/ld.so.conf是一个集合, 用数学的方式表达: { /etc/ld.so.conf.d/*.conf }


[问题] 有时候安装一个库, 安装目录在/lib64/下, 仍然找不到该库.

安装subunit时候遇到过这种情况.

sudo yum install -y subunit-0.0.21-2.el7.x86_64

编译报错信息: /usr/bin/ld: cannot find -lsubunit

[解答]

通过网上学的检测方法: gcc -lsubunit --verbose 确实存在问题(/usr/bin/ld: cannot find -lsubunit).

但是gcc -lpthread --verbose 不存在这样的问题.

对比/lib64/libsubunit* 和 /lib64/libpthread* 发现一个区别, 库文件 /lib64/libpthread.so存在,

而库文件/lib64/libsubunit.so却不存在, 建议一个软连接即可. sudo ln -s /lib64/libsubunit.so.0.0.0 /lib64/libsubunit.so


1 0
原创粉丝点击