杂记 (7) —— shell, gdb, vim, gcc, mingw32

网友投稿 747 2022-08-27

杂记 (7) —— shell, gdb, vim, gcc, mingw32

杂记 (7) —— shell, gdb, vim, gcc, mingw32

diff的结果显示解释

a - addc - changed - delete

如: $ diff file1 file2

1c1< 时间:0.29000000---> 时间:0.42000000

代表第一行不同

1,2d0< 时间:0.29000000

代表第一个文件比第二个文件多第一行​​时间:0.29000000​​​和第二行​​after sorted :​​。

0a1> hello

代表第一个文件比第二个文件少第一行hello。

查看磁盘空间

edemon@ubuntu1:~$ df -hFilesystem Size Used Avail Use% Mounted onudev 491M 0 491M 0% /devtmpfs 101M 5.2M 95M 6% /run/dev/sda5 20G 6.3G 13G 34% /tmpfs 501M 156K 501M 1% /dev/shmtmpfs 5.0M 4.0K 5.0M 1% /run/locktmpfs 501M 0 501M 0% /sys/fs/cgroupcgmfs 100K 0 100K 0% /run/cgmanager/fstmpfs 101M 56K 100M 1% /run/user/1000/dev/sr0 1.2G 1.2G 0 100% /media/edemon/Ubuntu 15.04

查看CentOS上mysql的版本

$ rpm -qi mysql-serverName : mysql-server Relocations: (not relocatable)Version : 5.1.73 Vendor: CentOSRelease : 7.el6 Build Date: Wed 11 May 2016 02:05:53 PM CSTInstall Date: Wed 07 Dec 2016 08:44:50 AM CST Build Host: worker1.bsys.centos.orgGroup : Applications/Databases Source RPM: mysql-5.1.73-7.el6.src.rpmSize : 25688915 License: GPLv2 with exceptionsSignature : RSA/SHA1, Thu 12 May 2016 06:46:25 PM CST, Key ID 0946fca2c105b9dePackager : CentOS BuildSystem < : : The MySQL server and related filesDescription :MySQL is a multi-user, multi-threaded SQL database server. MySQL is aclient/server implementation consisting of a server daemon (mysqld)and many different client programs and libraries. This package containsthe MySQL server and some accompanying files and directories.

产看文件系统类型

root@ubuntu1:/etc/init.d# df -hFilesystem Size Used Avail Use% Mounted onudev 491M 0 491M 0% /devtmpfs 101M 5.2M 95M 6% /run/dev/sda5 20G 6.7G 12G 36% /tmpfs 501M 156K 501M 1% /dev/shmtmpfs 5.0M 4.0K 5.0M 1% /run/locktmpfs 501M 0 501M 0% /sys/fs/cgroupcgmfs 100K 0 100K 0% /run/cgmanager/fstmpfs 101M 48K 100M 1% /run/user/1000/dev/sr0 1.2G 1.2G 0 100% /media/edemon/Ubuntu 15.04 i386root@ubuntu1:/etc/init.d# file -s /dev/sda5/dev/sda5: Linux rev 1.0 ext2 filesystem data (mounted or unclean), UUID=acbb6d51-cbc0-40cc-8341-d4b0a4471b44 (large files)

Can’t connect to local MySQL server through socket

抱着折腾的心思,我关闭了mysql服务端。

root@ubuntu1:~# mysqladmin -u root -p shutdown

然后尝试重新开启,出现下列错误:

root@ubuntu1:~# mysqld_safe &[1] 6366root@ubuntu1:~# 161211 10:20:13 mysqld_safe Can't log to error log and syslog at the same time. Remove all --log-error configuration options for --syslog to take effect.161211 10:20:13 mysqld_safe Logging to '/var/log/mysql/error.log'.161211 10:20:13

根据最后一句话的提示,我杀死mysqld进程。但是随后新的mysqld又出现了。查阅后,我将/etc/init.d/mysql删除了(准确的说是误删,mv写成了rm,word天 -_-||) 神奇的是我又能正常登陆mysql了。这正常吗。。。 我重新来了一次,发现是这样的: mysqld确实正常启动了:

root@ubuntu1:/etc/init.d# mysqld_safe &[1] 7276root@ubuntu1:/etc/init.d# 161211 11:09:28 mysqld_safe Can't log to error log and syslog at the same time. Remove all --log-error configuration options for --syslog to take effect.161211 11:09:28 mysqld_safe Logging to '/var/log/mysql/error.log'.161211 11:09:28 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql161211 11:09:30

登陆时出现问题:

edemon@ubuntu1:~$ mysql -u root -pEnter password: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

我查找sock文件,它并不存在。 重启mysql:

edemon@ubuntu1:~$ service mysql restart

OK:

root@ubuntu1:/home/edemon# mysql -u root -pEnter password: Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 3

不过我在CentOS上使用同样的指令时他不认识mysql,我搜索了一下mysqld,然后重启mysql服务,最后正常了。​​/etc/rc.d/init.d/mysqld restart​​

bc进行浮点运算

man在线手册中有这样的话:

NUMBERS 45 The most basic element in bc is the number. Numbers are arbitrary precision numbers. This precision is both in the integer part and the 46 fractional part. All numbers are represented internally in decimal and all computation is done in decimal. (This version truncates 47 results from divide and multiply operations.) There are two attributes of numbers, the length and the scale. The length is the total 48 number of significant decimal digits in a number and the scale is the total number of decimal digits after the decimal point. For exam‐ 49 ple: 50 .000001 has a length of 6 and scale of 6. 51 1935.000 has a length of 7 and a scale of 3.

所以我们可以通过改变scale来控制输出浮点数的精度。 比如:

edemon@ubuntu1:~$ bcbc 1.06.95Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.This is free software with ABSOLUTELY NO WARRANTY.For details type `warranty'. 2/40scale=22/4.50

查看cpu、处理器等硬件信息

​​cat /proc/cpuinfo​​

gdb临时改变变量的值

假设改变浮点数value1的值:

(gdb) set var value1=1

负数的增长

-1在计算机中的表示: 32整数 —— ​​​11111111111111111111111111111111​​​ 仅从负数的角度来看,负数在计算机中的表示也有一定的规律:

(gdb) set var $eax=-1(gdb) p/t $eax$3 = 11111111111111111111111111111111(gdb) set var $eax=-2(gdb) p/t $eax$4 = 11111111111111111111111111111110(gdb) set var $eax=-3(gdb) p/t $eax$5 = 11111111111111111111111111111101(gdb) set var $eax=-4(gdb) p/t $eax$6 = 11111111111111111111111111111100(gdb) set var $eax=-5(gdb) p/t $eax$7 = 11111111111111111111111111111011(gdb) set var $eax=-6(gdb) p/t $eax$8 = 11111111111111111111111111111010

Binary file (standard input) matches

grep提取特定信息出错,加上选项-a即可。 ​​​read_command |grep -a condition​​​ 专用于处理二进制文件的情况: ​​​Process a binary file as if it were text; this is equivalent to the --binary-files=text option​​

查gdb调试运行到哪一行

​​(gdb) bt​​查看堆栈信息,同时也能查看行数信息。

vim字体设置

​​ctrl \+ 0​​​ 常规字体 ​​​ctrl \+ shft \+ +​​​ 字体加大 ​​​ctrl \+ -​​字体变小

at计划任务

linux at命令可以用于在特定的时间执行设定的任务,如:

at 14:40at> ls -l > textat> job 8 at 2017-01-18 14:40

查看at任务列表:​​atq​​​;删除at任务: ​​atrm Job_number​​

run level

Linux默认的运行级别是

[root@CentOS Desktop]# runlevelN 5

查看各个运行级别的含义:

[root@CentOS Desktop]# cat /etc/inittab...# Default runlevel. The runlevels used are:# 0 - halt (Do NOT set initdefault to this)# 1 - Single user mode# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)# 3 - Full multiuser mode# 4 - unused# 5 - X11# 6 - reboot (Do NOT set initdefault to this)#

​​init 0​​可关机。

crontab

crontab的安装:​​yum install -y vixie-cron​​​ ​​​crontab -e​​​编辑crontab文件,不存在则自动创建。 crontab前5列是时间和日期。

9 # .---------------- minute (0 - 59) 10 # | .------------- hour (0 - 23) 11 # | | .---------- day of month (1 - 31) 12 # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... 13 # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat 14 # | | | | | 15 # * * * * * user-name command to

开启crond服务:

[root@CentOS Desktop]# /etc/rc.d/init.d/crond restartStarting crond: [ OK ][root@CentOS Desktop]# ps -ef |grep crondroot 3636 1 15 15:41 ? 00:00:01 crondroot 3639 2872 0 15:41 pts/0 00:00:00 grep

在crontab文件中编辑任务:​​vim /etc/crontab​​​ 末尾增加任务:​​19 16 * * * date > /home/edemon/workspace/text​​​ 最后查看结果:

[edemon@CentOS workspace]$ cat textWed Jan 18 16:19:01 CST 2017

使用​​crontab -e​​来制定任务却一直未能成功,迷惑啊。

查看gcc的搜索路径

先看看gcc帮助:

shell> gcc --helpUsage: gcc [options] file...Options: -pass-exit-codes Exit --help Display --target-help Display --help={common|optimizers|params|target|warnings|[^]{joined|separate|undocumented}}[,...] Display specific types of command line options (Use '-v --help' to display command line options of sub-processes) --version Display -dumpspecs Display all of the built in -dumpversion Display -dumpmachine Display the compiler's target processor -print-search-dirs Display the directories in the compiler's search path -print-libgcc-file-name Display the name of the compiler's companion library -print-file-name= Display -print-prog-name= Display -print-multiarch Display the target's normalized GNU triplet, used as a component in the library path -print-multi-directory Display the root directory for -print-multi-lib Display the mapping between command line options and multiple library search directories -print-multi-os-directory Display the relative path to OS -print-sysroot Display -print-sysroot-headers-suffix Display -Wa, Pass -Wp, Pass -Wl, Pass -Xassembler Pass -Xpreprocessor Pass -Xlinker Pass -save-temps Do not -save-temps= Do not -no-canonical-prefixes Do not canonicalize paths when prefixes to other gcc components -pipe Use -time Time -specs= Override built-in -std= Assume that the input sources are for --sysroot= Use as the root directory for and libraries -B Add to the compiler's search paths -v Display -### Like -v but options quoted and commands not executed -E Preprocess only; do not compile, assemble or -S Compile only; do not assemble or -c Compile and assemble, but do not -o Place -pie Create -shared Create -x Specify

根据提示查找搜索:

shell> gcc -print-search-dirsinstall: /usr/lib/gcc/i686-linux-gnu/4.9/programs: =/usr/lib/gcc/i686-linux-gnu/4.9/:/usr/lib/gcc/i686-linux-gnu/4.9/:/usr/lib/gcc/i686-linux-gnu/:/usr/lib/gcc/i686-linux-gnu/4.9/:/usr/lib/gcc/i686-linux-gnu/:/usr/lib/gcc/i686-linux-gnu/4.9/../../../../i686-linux-gnu/bin/i686-linux-gnu/4.9/:/usr/lib/gcc/i686-linux-gnu/4.9/../../../../i686-linux-gnu/bin/i386-linux-gnu/:/usr/lib/gcc/i686-linux-gnu/4.9/../../../../i686-linux-gnu/bin/libraries: =/usr/lib/gcc/i686-linux-gnu/4.9/:/usr/lib/gcc/i686-linux-gnu/4.9/../../../../i686-linux-gnu/lib/i686-linux-gnu/4.9/:/usr/lib/gcc/i686-linux-gnu/4.9/../../../../i686-linux-gnu/lib/i386-linux-gnu/:/usr/lib/gcc/i686-linux-gnu/4.9/../../../../i686-linux-gnu/lib/../lib/:/usr/lib/gcc/i686-linux-gnu/4.9/../../../i686-linux-gnu/4.9/:/usr/lib/gcc/i686-linux-gnu/4.9/../../../i386-linux-gnu/:/usr/lib/gcc/i686-linux-gnu/4.9/../../../../lib/:/lib/i686-linux-gnu/4.9/:/lib/i386-linux-gnu/:/lib/../lib/:/usr/lib/i686-linux-gnu/4.9/:/usr/lib/i386-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/i686-linux-gnu/4.9/../../../../i686-linux-gnu/lib/:/usr/lib/gcc/i686-linux-gnu/4.9/../../../:/lib/:/usr/lib/#for c:shell> `gcc -print-prog-name=cc1` -vignoring nonexistent directory "/usr/lib/gcc/i686-linux-gnu/4.9/../../../../i686-linux-gnu/include"#include "..." search starts here:#include <...> search starts here: /usr/lib/gcc/i686-linux-gnu/4.9/include /usr/local/include /usr/lib/gcc/i686-linux-gnu/4.9/include-fixed /usr/includeEnd of search list.#for c++shell> `gcc -print-prog-name=cc1plus` -vignoring nonexistent directory "/usr/lib/gcc/i686-linux-gnu/4.9/../../../../i686-linux-gnu/include"#include "..." search starts here:#include <...> search starts here: /usr/include/c++/4.9 /usr/include/i386-linux-gnu/c++/4.9 /usr/include/c++/4.9/backward /usr/lib/gcc/i686-linux-gnu/4.9/include /usr/local/include /usr/lib/gcc/i686-linux-gnu/4.9/include-fixed /usr/includeEnd of search list.^C

mingw32头文件和库文件

查找mingw32的搜索路径是一样的:

shell> i686-w64-mingw32-gcc --helpUsage: i686-w64-mingw32-gcc [options] file...Options: -pass-exit-codes Exit with highest error code from a phase --help Display this information --target-help Display target specific command line options --help={common|optimizers|params|target|warnings|[^]{joined|separate|undocumented}}[,...] Display specific types of command line options (Use '-v --help' to display command line options of sub-processes) --version Display compiler version information -dumpspecs Display all of the built in spec strings -dumpversion Display the version of the compiler -dumpmachine Display the compiler's target processor -print-search-dirs Display the directories in the compiler's search path -print-libgcc-file-name Display the name of the compiler's companion library -print-file-name= Display the full path to library -print-prog-name= Display the full path to compiler component -print-multiarch Display the target's normalized GNU triplet, used as a component in the library path -print-multi-directory Display the root directory for versions of libgcc -print-multi-lib Display the mapping between command line options and multiple library search directories -print-multi-os-directory Display the relative path to OS libraries -print-sysroot Display the target libraries directory -print-sysroot-headers-suffix Display the sysroot suffix used to find headers -Wa, Pass comma-separated on to the assembler -Wp, Pass comma-separated on to the preprocessor -Wl, Pass comma-separated on to the linker -Xassembler Pass on to the assembler -Xpreprocessor Pass on to the preprocessor -Xlinker Pass on to the linker -save-temps Do not delete intermediate files -save-temps= Do not delete intermediate files -no-canonical-prefixes Do not canonicalize paths when building relative prefixes to other gcc components -pipe Use pipes rather than intermediate files -time Time the execution of each subprocess -specs= Override built-in specs with the contents of -std= Assume that the input sources are for --sysroot= Use as the root directory for headers and libraries -B Add to the compiler's search paths -v Display the programs invoked by the compiler -### Like -v but options quoted and commands not executed -E Preprocess only; do not compile, assemble or link -S Compile only; do not assemble or link -c Compile and assemble, but do not link -o Place the output into -pie Create a position independent executable -shared Create a shared library -x Specify the language of the following input files Permissible languages include: c c++ assembler none 'none' means revert to the default behavior of guessing the language based on the file's extensionOptions starting with -g, -f, -m, -O, -W, or --param are automatically passed on to the various sub-processes invoked by i686-w64-mingw32-gcc. In order to pass other options on to these processes the -W options must be used.For bug reporting instructions, please see:<`i686-w64-mingw32-gcc -print-prog-name=cc1` -vignoring nonexistent directory "/usr/lib/gcc/i686-w64-mingw32/4.9-win32/../../../../i686-w64-mingw32/sys-include"#include "..." search starts here:#include <...> search starts here: /usr/lib/gcc/i686-w64-mingw32/4.9-win32/include /usr/lib/gcc/i686-w64-mingw32/4.9-win32/include-fixed /usr/lib/gcc/i686-w64-mingw32/4.9-win32/../../../../i686-w64-mingw32/includeEnd of search list.

查看库文件搜索目录:

[edemon@CentOS ~]$ i686-w64-mingw32-gcc -print-search-dirs install: /usr/lib/gcc/i686-w64-mingw32/4.9.2/programs: =/usr/libexec/gcc/i686-w64-mingw32/4.9.2/:/usr/libexec/gcc/i686-w64-mingw32/4.9.2/:/usr/libexec/gcc/i686-w64-mingw32/:/usr/lib/gcc/i686-w64-mingw32/4.9.2/:/usr/lib/gcc/i686-w64-mingw32/:/usr/lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/bin/i686-w64-mingw32/4.9.2/:/usr/lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/bin/libraries: =/usr/lib/gcc/i686-w64-mingw32/4.9.2/:/usr/lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/lib/i686-w64-mingw32/4.9.2/:/usr/lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/lib/../lib/:/usr/i686-w64-mingw32/sys-root/mingw/lib/i686-w64-mingw32/4.9.2/:/usr/i686-w64-mingw32/sys-root/mingw/lib/../lib/:/usr/lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/lib/:/usr/i686-w64-mingw32/sys-root/mingw/lib/

优先搜索多个头文件库

i686-w64-mingw32-gcc sdl_back.c -lSDL -I/usr/include/ -I/usr/include/i386-linux-gnu/gnu/

mingw32在linux平台生成windows可执行文件

下面提到的win.c仅仅是一个简单的hello程序:

#include int main(){ printf("hello\n"); return 0;}

然后使用mingw32生成汇编文件和win可执行文件:

root@ubuntu1:/home/edemon/workspace# i686-w64-mingw32-gcc -S -o win.s win.c root@ubuntu1:/home/edemon/workspace# i686-w64-mingw32-gcc -o win.exe win.c root@ubuntu1:/home/edemon/workspace# file win.exewin.exe: PE32 executable (console) Intel 80386, for MS Windowsroot@ubuntu1:/home/edemon/workspace# file win.swin.s: assembler source, ASCII textroot@ubuntu1:/home/edemon/workspace# cat win.s .file "win.c" .def ___main; .scl 2; .type 32; .endef .section .rdata,"dr"LC0: .ascii "hello\0" .text .globl _main .def _main; .scl 2; .type 32; .endef_main: pushl %ebp movl %esp, %ebp andl $-16, %esp subl $16, %esp call ___main movl $LC0, (%esp) call _puts movl $0, %eax leave ret .ident "GCC: (GNU) 4.9.2" .def _puts; .scl 2; .type 32; .endef

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:linux图形编程之SDL
下一篇:开发一款属于自己的编程语言 听起来是不是很酷?
相关文章

 发表评论

暂时没有评论,来抢沙发吧~