1. C语言运算符优先级
2. bluez-dbus-glib之间的调用关系图
0. vim进入0x模式,可以使用hexedit,查看器(hexdump )
%!xxd 返回 %!xxd -r
ps:objcopy objdump -t *.so, readelf -s *.so)
svn add 命令 递归目录下所有文件
svn add . --no-ignore --force
ubuntu16.04 gcc: error trying to exec 'cc1': execvp: 没有那个文件或目录
<= sudo apt-get update sudo apt-get install --reinstall build-essential
dubbo官方文档:dubbo.apache.org/zh-cn/docs/user/quick-start.html
linux netcat(nc) 与ncat的关系: netcat的改进工具 Ncat
#install libglib
#sudo apt install libglib2.0-dev
#get include dir
#pkg-config --cflags glib-2.0
#-I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include
#get lib path
#pkg-config --libs glib-2.0
#-lglib-2.0
#ldconfig -p | grep libglib-2.0
# libglib-2.0.so.0 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0
# libglib-2.0.so.0 (libc6) => /usr/lib/i386-linux-gnu/libglib-2.0.so.0
# libglib-2.0.so (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libglib-2.0.so
#gcc --print-search-dirs
1. 解压tar.xz文件:先 xz -d xxx.tar.xz 将 xxx.tar.xz解压成 xxx.tar 然后,再用 tar xvf xxx.tar来解包。
2. 统计当前目录下的.c文件的行数: find . -name "*.c" -type f -exec wc -l {} \; | awk '{count+=$1} END{print count}'
3. Linux系统下如何产生随机数
srand((unsigned)time(NULL)); //用于保证是随机数
s->acceleration.v[0] = (rand()%1)*(rand()%10);
s->acceleration.v[1] = (rand()%1)*(rand()%10);
s->acceleration.v[2] = (rand()%1)*(rand()%10);
struct timeval tpstart;
gettimeofday(&tpstart,NULL);
srand(tpstart.tv_usec);
1+(int) (100.0*rand()/(RAND_MAX+1.0));
RAND_MAX是系统的一个宏。
查看服务列表代码
sudo service --status-all
sudo initctl list
在ubuntu16.04系统下获取glibc的版本号
1. getconf GNU_LIBC_VERSION
neo@neo:~$ getconf GNU_LIBC_VERSION
glibc 2.27
2. man -k libc
neo@neo:~$ man -k libc
cracklib-check (8) - Check passwords using libcrack2
create-cracklib-dict (8) - Check passwords using libcrack2
error (3) - glibc error reporting functions
error_at_line (3) - glibc error reporting functions
error_message_count (3) - glibc error reporting functions
error_one_per_line (3) - glibc error reporting functions
error_print_progname (3) - glibc error reporting functions
glibc (7) - overview of standard C libraries on Linux
gnu_get_libc_release (3) - get glibc version and release
gnu_get_libc_version (3) - get glibc version and release
libc (7) - overview of standard C libraries on Linux
XkbGetXlibControls (3) - Determines the current state of the Library Controls
XkbSetXlibControls (3) - Changes the state of the Library Controls
使用 gnu_get_libc_version/gnu_get_libc_release()可以获取
3. ldd your_exec_file
your_exec_file call glibc functions
6. DEVICE /dev/ttyUSB0 Locked.
sudo rm -rf /var/lock/LL*
9 usb_uevent:
sent uevent USB_STATE=CONNECTED
联网脚本wifi-conn.sh
#! /bin/sh
if [ $# != 2 ]; then
echo "./wifi-conn.sh \"username\" \"passwd\""
exit;
fi
ifconfig wlan0 down
ifconfig wlan0 up
ifconfig lo up
cat > /data/wpa_supplicant.config << EOF
ctrl_interface=/var/run/wpa_supplicant
ap_scan=1
network={
proto=RSN
key_mgmt=WPA-PSK
pairwise=CCMP TKIP
group=CCMP TKIP
ssid="$1"
psk="$2"
}
EOF
# if wpa udhcpc exist kill them.
wpapid=`ps aux | grep "wpa_supplicant" | grep -v grep | sed -n '1p' | awk '{print $1}'`
if [ ! -n "$wpapid" ]; then
echo "wpapid($wpapid)"
else
kill -9 $wpapid
echo "wpapid($wpapid) was killed"
fi
udhcpcpid=`ps aux | grep "udhcpc" | grep -v grep | sed -n '1p' | awk '{print $1}'`
if [ ! -n "$udhcpcpid" ]; then
echo "udhcpcpid($udhcpcpid)"
else
kill -9 $udhcpcpid
echo "udhcpcpid($udhcpcpid) was killed"
fi
/usr/sbin/wpa_supplicant -Dnl80211 -iwlan0 -c/data/wpa_supplicant.config -B
/sbin/udhcpc -i wlan0 -b
10. linux中shell变量$#,$@,$0,$1,$2的含义解释:
变量说明:
$$ Shell本身的PID(ProcessID)
$! Shell最后运行的后台Process的PID
$? 最后运行的命令的结束代码(返回值)
$- 使用Set命令设定的Flag一览
$* 所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。
$@ 所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。
$# 添加到Shell的参数个数
$0 Shell本身的文件名
$1~$n 添加到Shell的各参数值。$1是第1参数、$2是第2参数…
11. automake-1.15: 未找到命令
sudo autoreconf -ivf
12. linux automake usage
autoconf autoscan automake
12.1 autoscan : autoscan.log configure.scan
12.2 configure.scan => configure.in/configure.ac, then modify it : AC_INIT(FULL-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS) AM_INIT_AUTOMAKE(FULL-PACKAGE-NAME, VERSION) AC_OUTPUT([Makefile])
12.3 aclocal : aclocal.m4 autom4te.cache
12.4 autoconf : configure
12.5 autoheader : config.h.in, copy symbols link from file acconfig.h
12.6 automake [--add-missing] : Makefile.am => Makefile.in
12.7 "./configure","make","make install"(安装到系统路径下,个人例子需要先)
12.8 make dist 打包为 targz
需要修改的文件configure.ac Makefile.in
www.cnblogs.com/bugutian/p/5560548.html
usb当作虚拟网卡或者正常使用
#! /bin/sh
export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
adbdpid=`ps aux | grep "adbd" | grep -v grep | grep -v "run_adbd" | sed -n '1p' | awk '{print $1}'`
if [ ! -n "$adbdpid" ]; then
echo "no adbd"
echo $adbdpid
echo "no adbd"
else
echo "$adbdpid was killed"
kill -9 $adbdpid
fiif [ "$1" == "mass_storage" ]; then
echo "usb mass storage"
echo 0 > /sys/class/android_usb/android0/enable
echo Routon > /sys/class/android_usb/android0/iManufacturer
echo S1801 > /sys/class/android_usb/android0/iProductecho 239 > /sys/class/android_usb/android0/bDeviceClass
echo 2 > /sys/class/android_usb/android0/bDeviceSubClass
echo 1 > /sys/class/android_usb/android0/bDeviceProtocol
echo 2206 > /sys/class/android_usb/android0/idVendor
echo 1985 > /sys/class/android_usb/android0/idProduct
echo mass_storage > /sys/class/android_usb/android0/functions
# echo 1 > /sys/class/android_usb/android0/f_mass_storage/lun/ro
echo /dev/ums > /sys/class/android_usb/android0/f_mass_storage/lun/file
echo 1 > /sys/class/android_usb/android0/enableelif [ "$1" == "mtp" ]; then
echo "mtp"echo Routon > /sys/class/android_usb/android0/iManufacturer
echo S1801 > /sys/class/android_usb/android0/iProductecho 0 > /sys/class/android_usb/android0/enable
echo 2206 > /sys/class/android_usb/android0/idVendor
echo 1985 > /sys/class/android_usb/android0/idProduct
echo mtp > /sys/class/android_usb/android0/functions
echo 1 > /sys/class/android_usb/android0/enable
elif [ "$1" == "network" ]; then
echo "adb connect by network"echo RockChip > /sys/class/android_usb/android0/iManufacturer
echo RV1108 > /sys/class/android_usb/android0/iProductif [ "$usbmode" == "USBMODE" ];then
umount /dev/usb-ffs/adb
fiecho 0 > /sys/class/android_usb/android0/enable
echo "" > /sys/class/android_usb/android0/f_ffs/aliases
echo 2207 > /sys/class/android_usb/android0/idVendor
echo 2910 > /sys/class/android_usb/android0/idProduct
echo "" > /sys/class/android_usb/android0/functions
echo 1 > /sys/class/android_usb/android0/enable/usr/local/sbin/adbd &
elif [ "$1" == "rndis" ]; then
pkill adbd
pkill dnsmasqecho "rndis"
echo RockChip > /sys/class/android_usb/android0/iManufacturer
echo RV1108 > /sys/class/android_usb/android0/iProductif [ "$usbmode" == "USBMODE" ];then
umount /dev/usb-ffs/adb
fimkdir -p /dev/usb-ffs/adb
mount -t functionfs adb /dev/usb-ffs/adbecho 0 > /sys/class/android_usb/android0/enable
echo "" > /sys/class/android_usb/android0/f_ffs/aliases
echo 2207 > /sys/class/android_usb/android0/idVendor
echo 0003 > /sys/class/android_usb/android0/idProduct
echo rndis > /sys/class/android_usb/android0/functions
echo 1 > /sys/class/android_usb/android0/f_rndis/wceis
echo 224 > /sys/class/android_usb/android0/bDeviceClass
echo 1 > /sys/class/android_usb/android0/enableusbmode="RNDIS"
str=`cat /proc/cpuinfo | grep Serial | awk -F : '{print $2}'`
suffix=${str:1:2}:${str:3:2}:${str:5:2}:${str:7:2}
macaddr=22:1D:$suffix
ifconfig rndis0 hw ether $macaddr
ifconfig rndis0 192.168.60.1 netmask 255.255.255.0 up
#route add default gw 192.168.60.1
dnsmasq --resolv-file=/etc/resolv.conf --no-poll --dhcp-range=192.168.60.2,192.168.60.254,1h --dhcp-range=192.168.43.2,192.168.43.254,1h --listen-address=192.168.60.1,192.168.43.1
else
echo "adb-connect will use usbmode"echo RockChip > /sys/class/android_usb/android0/iManufacturer
echo RV1108 > /sys/class/android_usb/android0/iProductmkdir -p /dev/usb-ffs/adb
mount -t functionfs adb /dev/usb-ffs/adbecho 0 > /sys/class/android_usb/android0/enable
echo adb > /sys/class/android_usb/android0/f_ffs/aliases
echo 2207 > /sys/class/android_usb/android0/idVendor
echo 0006 > /sys/class/android_usb/android0/idProduct
echo adb > /sys/class/android_usb/android0/functions
echo 1 > /sys/class/android_usb/android0/enable
usbmode="USBMODE"
/usr/local/sbin/adbd &
fi
#while true; do
# server=`ps aux | grep adbd | grep -v grep`
# if [ ! "$server" ]; then
# /usr/local/sbin/adbd &
# echo "run adbd"
# sleep 1
# fi
# sleep 1
#done
#server=`ps aux | grep adbd | grep -v grep`
#if [ ! "$server" ]; then
# /usr/local/sbin/adbd &
# echo "run adbd"
#fi#/usr/local/sbin/adbd &