在 Linux 下制作动态链接库,“标准” 的做法是编译成位置无关代码(Position Independent Code,PIC),然后链接成一个动态链接库.经常遇到的一个问题是 -fPIC 是不是必需,因为好像不加经常也能正常运行,只是创建 .so 的时候会有一个警告. 搜索.试验了一下,答案似乎是这样: (1) 通常的建议是始终加上 -fPIC 生成位置无关代码: (2) AMD64 下,必须使用位置无关代码,否则连接失败: relocation R_X86_64_32S against…
linux下添加动态链接库路径的方法 2017年01月20日 10:08:17 阅读数:5596   Linux共享库路径配置 Linux下找不到共享库文件的典型现象为明明已经安装某个软包(如libnet,MySQL),编译连接可以正常进行,但是在运行时出现如“error while loading shared libraries: libnet.so.1:cannot open shared object file :No such file or directory”的错误提示. 原因是L…
linux下生成core dump文件方法及设置    from:http://www.cppblog.com/kongque/archive/2011/03/07/141262.html core dump的概念: A core dump is the recorded state of the working memory of a computer program at a specific time, generally when the program has terminated a…
1.Linux下生成密钥 ssh-keygen的命令手册,通过”man ssh-keygen“命令: 通过命令”ssh-keygen -t rsa“ 生成之后会在用户的根目录生成一个 “.ssh”的文件夹 进入“.ssh”会生成以下几个文件 authorized_keys:存放远程免密登录的公钥,主要通过这个文件记录多台机器的公钥 id_rsa : 生成的私钥文件 id_rsa.pub : 生成的公钥文件 know_hosts : 已知的主机公钥清单 如果希望ssh公钥生效需满足至少下面两个条件…
linux下查看动态链接库依赖关系的命令 x86:ldd    *.so arm:arm-linux-readelf    -d    *.so 实际例子:以项目中用到的库librtsp.so分析:lijun@ubuntu:~/workspace$ arm-hisiv100nptl-linux-ld -d librtsp.so arm-hisiv100nptl-linux-ld: warning: liblog.so, needed by librtsp.so, not found (try u…
下面通过一个例子来介绍如何生成一个动态库.这里有一个头文件:so_test.h,三个.c文件:test_a.c.test_b.c.test_c.c,我们将这几个文件编译成一个动态库:libtest.so. //so_test.h:#include <stdio.h>void test_a();void test_b(); //test_a.c: #include <stdio.h>#include "so_test.h"void test_a(){  print…
大家都知道在 Linux 可以用 gdb 来调试应用程序,当然前提是用 gcc 编译程序时要加上 -g 参数.我这篇文章里将讨论一下用 gdb 来调试动态链接库的问题. 首先,假设我们准备这样的一个动态链接库: QUOTE:库名称是: ggg动态链接库文件名是: libggg.so头文件是: get.h提供这样两个函数调用接口:    int get ();    int set (int a); 要生成这样一个动态链接库,我们首先编写这样一个头文件: [Copy to clipboard]CO…
LD_LIBRARY_PATH Linux环境变量名,该环境变量主要用于指定查找共享库(动态链接库)时除了默认路径之外的其他路径.(该路径在默认路径之前查找) 移植程序时的经常碰到需要使用一些特定的动态库,而这些编译好的动态库放在我们自己建立的目录里,这时可以将这些目录设置到LD_LIBRARY_PATH中. 当执行函数动态链接.so时,如果此文件不在缺省目录下‘/usr/local/lib’ and ‘/usr/lib’. 那么就需要指定环境变量LD_LIBRARY_PATH 假如现在需要在已…
openssl rand -hex n (n is number of characters) LANG=c < /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-16};echo; (生成随机密码16) shell 生成指定范围随机数与随机字符串 热度5 评论 245 www.BkJia.Com  网友分享于:  2014-04-23 12:04:43     浏览数10854次   shell 生成指定范围随机数与随机字符串   1.使用系统的 $…
我们很多c程序在windows下是以dll形式展现的,在linux则是以so 形式展现的. windows一般不会因为编译dll文件的编译器版本不同而出先dll文件不能执行. 但是linux下,不同版本内核的linux下编译的c程序,在其他版本的linux下就容易出现无法执行的问题.主要可能是支持程序的内核相对于编译时的内核较高或者版本相对于编译时的内核较低. 那我们如何看别人给我们提供的动态链接库文件(so后缀的)是否能在当前linux系统下可用呢.首先我们就要看他依赖的相关文件是否存在,查看…