分类目录归档:技术文献

readelf命令的使用

readelf命令是Linux下的分析ELF文件的命令,这个命令在分析ELF文件格式时非常有用,下面以ELF格式可执行文件test为例详细介绍:
readelf -v 显示版本
readelf -h 显示帮助
readelf -a test 显示test的全部信息
readelf -h test 显示test的ELF Header的文件头信息(就是ELF文件开始的前52个字节)
readelf -l test 显示test的Program Header Table中的每个Prgram Header Entry的信息(如果有)
readelf -S test 显示test的Section Header Table中的每个Section Header Entry的信息(如果有)
readelf -g test 显示test的Section Group的信息(如果有)
readelf -s test 显示test的Symbol Table中的每个Symbol Table Entry的信息(如果有)
readelf -e test 显示test的全部头信息(包括ELF Header,Section Header和Program Header,等同与 readelf -h -l -S test)
readelf -n test 显示test的note段的信息(如果有)
readelf -r test 显示test中的可重定位段的信息(如果有)
readelf -d test 显示test中的Dynamic Section的信息(如果有)
readelf -V test 显示test中的GNU Version段信息(如果有)

Qt5常用依赖库

1.核心库(必须添加的)
Qt5Core.dll
Qt5Gui.dll
Qt5Widgets.dll

2.网络库
Qt5Network.dll

2.ICU(International Component for Unicode,Unicode工具)依赖库
icudt53.dll
icuin53.dll
icuuc53.dll

3.插件库(平台、图片处理、数据库…)
bearer目录(网络编程需要添加)
imageformats目录(图片处理需要添加)
platforms目录(windows下运行必须添加)

4.EGL依赖库
libEGL.dll
libGLESv2.dll

5.mingw依赖库
libstdc++-6.dll
libgcc_s_dw2-1.dll
libwinpthread-1.dll

6.其他(QtCreator\bin目录下,https编程需要添加)
ssleay32.dll
libeay32.dll

error opening terminal 解决方法

ncurses库没有安装设置正确,可能出现如下的错误信息:

error opening terminal Linux
error opening terminal xterm
error opening terminal vt100
error opening terminal vt102
error opening terminal unknown
error opening terminal cgywin
...
解决办法:
1. 首先要确定ncurses库已经正确安装了。在debian, Ubuntu上,可以用dpkg -l | grep ncurses 查看ncurses库是否已安装。
2. 如果ncurses已经安装了,需要查看TERM, TERMINFO两个环境变量已经设置正确了。
echo $TERM
echo $TERMINFO
如果没有设置正确,需要设置为正确的值。
关于TERMINFO, 应设置为terminfo的路径。www.linuxidc.com比如/usr/share/terminfo 或者 /usr/lib/terminfo。 查看terminfo目录下是否保存了终端信息文件:其中通常分为a, b, c, d...z这些字母目录,每个目录中包含了以该字母开头的term信息。比如vt100放在"v"目录中。我们需要的term,必须在对应的目录中存在term信息。确定这些信息后,就可以设置TERM和TERMINFO信息:
export TERMINFO=/usr/share/terminfo
上面的设置必须保证/usr/share/terminfo中存在term信息,且/usr/share/terminfo/l/是存在的。

update-rc.d使用

在Linux系统下,一个Services的启动、停止以及重启通常是通过/etc/init.d目录下的脚本来控制的。然而,在启动或改变运行级别时,是在/etc/rcX.d中来搜索脚本。其中X是运行级别的number。本文将解释如何启动、关闭和修改服务的运行。当你在Debian下安装一个新的服务,比如Apache2,安装完成后,默认情况下它会启动,并在下一次重启后自动启动。但是如果你不是一直需要这个服务,只在需要的时候启用它,你可以禁用它。直到你需要使用的时候,执行如下指令:
/etc/init.d/apache2 start
要实现这个目的,你需要先在/etc/rcX.d目录中删除所有apache2的符号链接,但这个方法操作麻烦,且效率低下。因此,我们建议你使用update-rc.d命令来实现这个功能。
1、删除一个服务
如果你想手动的完全禁用Apache2服务,你需要删除其中的所有在/etc/rcX.d中的单一链路。但是如果使用update-rc.d,则非常简单:
update-rc.d -f apache2 remove
参数-f是强制删除符号链接,即使/etc/init.d/apache2仍然存在。 Note:这个命令仅仅禁止该服务,直到该服务被升级。如果你想在服务升级后仍然保持被禁用。应该执行如下的命令:
update-rc.d apache2 stop 80 0 1 2 3 4 5 6 .
2、增加一个服务
如果你想重新添加这个服务并让它开机自动执行,你需要执行以下命令:
update-rc.d apache2 defaults
并且可以指定该服务的启动顺序:
update-rc.d apache2 defaults 90
还可以更详细的控制start与kill顺序:
update-rc.d apache2 defaults 20 80
其中前面的20是start时的运行顺序级别,80为kill时的级别。也可以写成:
update-rc.d apache2 start 20 2 3 4 5 . stop 80 0 1 6 .
其中0~6为运行级别。 update-rc.d命令不仅适用Linux服务,编写的脚本同样可以用这个命令设为开机自动运行

Ubuntu 安装 端口转发工具rinetd

1,下载 第一中方式 用 apt-get install rinetd 或者从官网下载http://www.boutell.com/rinetd/
2,配置,端口转发的配置在 /etc/rinetd.conf
配置规则

0.0.0.0 8080 172.19.94.3 8080
0.0.0.0 2222 192.168.0.103 3389
1.2.3.4 80 192.168.0.10 80

说明一下(0.0.0.0表示本机绑定所有可用地址)
将所有发往本机8080端口的请求转发到172.19.94.3的8080端口
将所有发往本机2222端口的请求转发到192.168.0.103的3389端口
将所有发往1.2.3.4的80端口请求转发到192.168.0.10的80端口

命令格式是
bindaddress bindport connectaddress connectport
绑定的地址 绑定的端口 连接的地址 连接的端口

[Source Address] [Source Port] [Destination Address] [Destination Port]
源地址 源端口 目的地址 目的端口

3,打开

启动程序
pkill rinetd ##关闭进程
rinetd -c /etc/rinetd.conf ##启动转发
把这条命令加到/etc/rc.local里面就可以开机自动运行 好像不添加也行