cmake 3.20.0 binary安装
直接下载binary包。
配置环境变量
echo "export PATH=\$PATH:/cmake的安装路径" >> /etc/bashrc
source ~/.bashrc
然后就可以使用了
# cmake --version
cmake version 3.20.0-rc4
CMake suite maintained and supported by Kitware (kitware.com/cmake).
直接下载binary包。
配置环境变量
echo "export PATH=\$PATH:/cmake的安装路径" >> /etc/bashrc
source ~/.bashrc
然后就可以使用了
# cmake --version
cmake version 3.20.0-rc4
CMake suite maintained and supported by Kitware (kitware.com/cmake).
玩NAS的因为解决外网访问的问题,经常需要将外网映射成内网。
如果你用的是unraid, 那么大部分的软件都是通过docker的方式安装的,也不可避免的要映射端口,将本地局域网端口映射成docker 内部应用的服务端口。
这里就有3层端口:外网->内部局域网->docker内部
两层映射:一次在路由器上映射,一次在启动docker时映射。
搞清楚了这3层端口两层映射行为,那么大部分的网络问题就都能迎刃而解。
宝塔是一套web面板,类似于webmin。
我们在unraid中安装后,一般都会套件安装 nginx,php,mysql,phpmyadmin等。
使用中在mysql页面点击phpMyAdmin按钮时,提示404:
http://192.168.x.x:123/phpmyadmin_94fece33f6f785c2/index.php
然后登录进baota daocker里面,确认了下nginx的配置文件。找到了nginx 123 server的root,发现是对应的路径问题。
既然定位了原因,那么解决就很简单了,对症下药,通过ln -s 源 目的 创建目录的软连接。
OK...
之前的环境都是好用的,一次深度垃圾清理后,发现所有配置和clang-format都不好用了。
clang-format要起作用:
网上配置很多,只列举几个比较重要的:
Clang-format:Executable(clang-format.executable)
方式1: 填写file。表示在项目根目录下搜索.clang-format
方式2: 修改VSC的Clang_format_style属性,直接填入键值对,也就是.clang-format的有效内容,这样就相当于全局配置文件了:
BasedOnStyle: LLVM
BreakBeforeBraces: Linux
Language: Cpp
ColumnLimit: 120
ReflowComments: false
SortIncludes: false
BreakBeforeBraces: Custom
BraceWrapping:
AfterEnum: false
AfterStruct: false
SplitEmptyFunction: false
AlignConsecutiveAssignments: true
AlignConsecutiveMacros: true
AllowShortFunctionsOnASingleLine: None
型号:151SK lenovo
最近深度清理后,发现鼠标的控制面板管理touchpad标签页不见了,touchpad无法禁用,一直在打字过程中光标乱飞。
找了lenovo的151sk的驱动页面,找了对应的touchpad驱动,不好用。
这个是显示win10的,也不是针对151sk的,但是实际测试可用:
ce0j06af.exe
git hook 是一种很有用的方式。
一般的实现就是在本地开启一个监听hook url的http server,然后对url进行处理。
因为很多服务器都有nginx作为web server,所以我们优先考虑如何利用nginx。
一般网上比较多的推荐是用nginx的衍生版本openresty,通过lua来实现。
这里记录一个简单的思路:
通过nginx的lacation来匹配hook url特征,然后产生特定的access 或者error日志,然后通过脚本监控日志的变化,来判断是否有hook消息触发。这样nginx是现成的,且实现方法是无阻塞的,只要实现个一直监控文件大小的脚本就可以了,非常简单。
location /xxx/xxx/x {
return 200 "xxx";
access_log /xxx.log;
}
这里需要确认hook的触发是成功access还是失败error,才能正确的触发日志文件.
这个脚本负责日志变化时,执行我们的git hook动作。
#!/bin/sh
# 要监控的文件
mfile=/xxx.log
#启动一个循环,定时检查文件是否存在
while true; do
#监控文件大小
fsize=`stat -c "%s" $mfile`
if [ $fsize != 1 ]; then
echo "">$mfile
echo "log file update"
#TODO:需要的逻辑放这里
...
fi
sleep 5
done
脚本好了,然后就是要设置开机启动,否则服务器重启后,hook就失效了。
开机启动,有很多办法设置,比如最简单的rc.local脚本
存档文章。原始链接:https://www.cnblogs.com/Jimmy1988/p/7485133.html
PS: 只有当系统调用或者调用lib函数时出错,才会置位errno!
查看系统中所有的errno所代表的含义,可以采用如下的代码:
/* Function: obtain the errno string
* char *strerror(int errno)
*/
#include <stdio.h>
#include <string.h> //for strerror()
//#include <errno.h>
int main()
{
int tmp = 0;
for(tmp = 0; tmp <=256; tmp++)
{
printf("errno: %2d\t%s\n",tmp,strerror(tmp));
}
return 0;
}
输出信息如下:
errno: 0 Success
errno: 1 Operation not permitted
errno: 2 No such file or directory
errno: 3 No such process
errno: 4 Interrupted system call
errno: 5 Input/output error
errno: 6 No such device or address
errno: 7 Argument list too long
errno: 8 Exec format error
errno: 9 Bad file descriptor
errno: 10 No child processes
errno: 11 Resource temporarily unavailable
errno: 12 Cannot allocate memory
errno: 13 Permission denied
errno: 14 Bad address
errno: 15 Block device required
errno: 16 Device or resource busy
errno: 17 File exists
errno: 18 Invalid cross-device link
errno: 19 No such device
errno: 20 Not a directory
errno: 21 Is a directory
errno: 22 Invalid argument
errno: 23 Too many open files in system
errno: 24 Too many open files
errno: 25 Inappropriate ioctl for device
errno: 26 Text file busy
errno: 27 File too large
errno: 28 No space left on device
errno: 29 Illegal seek
errno: 30 Read-only file system
errno: 31 Too many links
errno: 32 Broken pipe
errno: 33 Numerical argument out of domain
errno: 34 Numerical result out of range
errno: 35 Resource deadlock avoided
errno: 36 File name too long
errno: 37 No locks available
errno: 38 Function not implemented
errno: 39 Directory not empty
errno: 40 Too many levels of symbolic links
errno: 41 Unknown error 41
errno: 42 No message of desired type
errno: 43 Identifier removed
errno: 44 Channel number out of range
errno: 45 Level 2 not synchronized
errno: 46 Level 3 halted
errno: 47 Level 3 reset
errno: 48 Link number out of range
errno: 49 Protocol driver not attached
errno: 50 No CSI structure available
errno: 51 Level 2 halted
errno: 52 Invalid exchange
errno: 53 Invalid request descriptor
errno: 54 Exchange full
errno: 55 No anode
errno: 56 Invalid request code
errno: 57 Invalid slot
errno: 58 Unknown error 58
errno: 59 Bad font file format
errno: 60 Device not a stream
errno: 61 No data available
errno: 62 Timer expired
errno: 63 Out of streams resources
errno: 64 Machine is not on the network
errno: 65 Package not installed
errno: 66 Object is remote
errno: 67 Link has been severed
errno: 68 Advertise error
errno: 69 Srmount error
errno: 70 Communication error on send
errno: 71 Protocol error
errno: 72 Multihop attempted
errno: 73 RFS specific error
errno: 74 Bad message
errno: 75 Value too large for defined data type
errno: 76 Name not unique on network
errno: 77 File descriptor in bad state
errno: 78 Remote address changed
errno: 79 Can not access a needed shared library
errno: 80 Accessing a corrupted shared library
errno: 81 .lib section in a.out corrupted
errno: 82 Attempting to link in too many shared libraries
errno: 83 Cannot exec a shared library directly
errno: 84 Invalid or incomplete multibyte or wide character
errno: 85 Interrupted system call should be restarted
errno: 86 Streams pipe error
errno: 87 Too many users
errno: 88 Socket operation on non-socket
errno: 89 Destination address required
errno: 90 Message too long
errno: 91 Protocol wrong type for socket
errno: 92 Protocol not available
errno: 93 Protocol not supported
errno: 94 Socket type not supported
errno: 95 Operation not supported
errno: 96 Protocol family not supported
errno: 97 Address family not supported by protocol
errno: 98 Address already in use
errno: 99 Cannot assign requested address
errno: 100 Network is down
errno: 101 Network is unreachable
errno: 102 Network dropped connection on reset
errno: 103 Software caused connection abort
errno: 104 Connection reset by peer
errno: 105 No buffer space available
errno: 106 Transport endpoint is already connected
errno: 107 Transport endpoint is not connected
errno: 108 Cannot send after transport endpoint shutdown
errno: 109 Too many references: cannot splice
errno: 110 Connection timed out
errno: 111 Connection refused
errno: 112 Host is down
errno: 113 No route to host
errno: 114 Operation already in progress
errno: 115 Operation now in progress
errno: 116 Stale file handle
errno: 117 Structure needs cleaning
errno: 118 Not a XENIX named type file
errno: 119 No XENIX semaphores available
errno: 120 Is a named type file
errno: 121 Remote I/O error
errno: 122 Disk quota exceeded
errno: 123 No medium found
errno: 124 Wrong medium type
errno: 125 Operation canceled
errno: 126 Required key not available
errno: 127 Key has expired
errno: 128 Key has been revoked
errno: 129 Key was rejected by service
errno: 130 Owner died
errno: 131 State not recoverable
errno: 132 Operation not possible due to RF-kill
errno: 133 Memory page has hardware error
errno: 134~255 unknown error!
Linux中,在头文件 /usr/include/asm-generic/errno-base.h 对基础常用errno进行了宏定义:
#ifndef _ASM_GENERIC_ERRNO_BASE_H
#define _ASM_GENERIC_ERRNO_BASE_H
#define EPERM 1 /* Operation not permitted */
#define ENOENT 2 /* No such file or directory */
#define ESRCH 3 /* No such process */
#define EINTR 4 /* Interrupted system call */
#define EIO 5 /* I/O error */
#define ENXIO 6 /* No such device or address */
#define E2BIG 7 /* Argument list too long */
#define ENOEXEC 8 /* Exec format error */
#define EBADF 9 /* Bad file number */
#define ECHILD 10 /* No child processes */
#define EAGAIN 11 /* Try again */
#define ENOMEM 12 /* Out of memory */
#define EACCES 13 /* Permission denied */
#define EFAULT 14 /* Bad address */
#define ENOTBLK 15 /* Block device required */
#define EBUSY 16 /* Device or resource busy */
#define EEXIST 17 /* File exists */
#define EXDEV 18 /* Cross-device link */
#define ENODEV 19 /* No such device */
#define ENOTDIR 20 /* Not a directory */
#define EISDIR 21 /* Is a directory */
#define EINVAL 22 /* Invalid argument */
#define ENFILE 23 /* File table overflow */
#define EMFILE 24 /* Too many open files */
#define ENOTTY 25 /* Not a typewriter */
#define ETXTBSY 26 /* Text file busy */
#define EFBIG 27 /* File too large */
#define ENOSPC 28 /* No space left on device */
#define ESPIPE 29 /* Illegal seek */
#define EROFS 30 /* Read-only file system */
#define EMLINK 31 /* Too many links */
#define EPIPE 32 /* Broken pipe */
#define EDOM 33 /* Math argument out of domain of func */
#define ERANGE 34 /* Math result not representable */
#endif
在 /usr/include/asm-asm-generic/errno.h 中,对剩余的errno做了宏定义:
#ifndef _ASM_GENERIC_ERRNO_H
#define _ASM_GENERIC_ERRNO_H
#include <asm-generic/errno-base.h>
#define EDEADLK 35 /* Resource deadlock would occur */
#define ENAMETOOLONG 36 /* File name too long */
#define ENOLCK 37 /* No record locks available */
#define ENOSYS 38 /* Function not implemented */
#define ENOTEMPTY 39 /* Directory not empty */
#define ELOOP 40 /* Too many symbolic links encountered */
#define EWOULDBLOCK EAGAIN /* Operation would block */
#define ENOMSG 42 /* No message of desired type */
#define EIDRM 43 /* Identifier removed */
#define ECHRNG 44 /* Channel number out of range */
#define EL2NSYNC 45 /* Level 2 not synchronized */
#define EL3HLT 46 /* Level 3 halted */
#define EL3RST 47 /* Level 3 reset */
#define ELNRNG 48 /* Link number out of range */
#define EUNATCH 49 /* Protocol driver not attached */
#define ENOCSI 50 /* No CSI structure available */
#define EL2HLT 51 /* Level 2 halted */
#define EBADE 52 /* Invalid exchange */
#define EBADR 53 /* Invalid request descriptor */
#define EXFULL 54 /* Exchange full */
#define ENOANO 55 /* No anode */
#define EBADRQC 56 /* Invalid request code */
#define EBADSLT 57 /* Invalid slot */
#define EDEADLOCK EDEADLK
#define EBFONT 59 /* Bad font file format */
#define ENOSTR 60 /* Device not a stream */
#define ENODATA 61 /* No data available */
#define ETIME 62 /* Timer expired */
#define ENOSR 63 /* Out of streams resources */
#define ENONET 64 /* Machine is not on the network */
#define ENOPKG 65 /* Package not installed */
#define EREMOTE 66 /* Object is remote */
#define ENOLINK 67 /* Link has been severed */
#define EADV 68 /* Advertise error */
#define ESRMNT 69 /* Srmount error */
#define ECOMM 70 /* Communication error on send */
#define EPROTO 71 /* Protocol error */
#define EMULTIHOP 72 /* Multihop attempted */
#define EDOTDOT 73 /* RFS specific error */
#define EBADMSG 74 /* Not a data message */
#define EOVERFLOW 75 /* Value too large for defined data type */
#define ENOTUNIQ 76 /* Name not unique on network */
#define EBADFD 77 /* File descriptor in bad state */
#define EREMCHG 78 /* Remote address changed */
#define ELIBACC 79 /* Can not access a needed shared library */
#define ELIBBAD 80 /* Accessing a corrupted shared library */
#define ELIBSCN 81 /* .lib section in a.out corrupted */
#define ELIBMAX 82 /* Attempting to link in too many shared libraries */
#define ELIBEXEC 83 /* Cannot exec a shared library directly */
#define EILSEQ 84 /* Illegal byte sequence */
#define ERESTART 85 /* Interrupted system call should be restarted */
#define ESTRPIPE 86 /* Streams pipe error */
#define EUSERS 87 /* Too many users */
#define ENOTSOCK 88 /* Socket operation on non-socket */
#define EDESTADDRREQ 89 /* Destination address required */
#define EMSGSIZE 90 /* Message too long */
#define EPROTOTYPE 91 /* Protocol wrong type for socket */
#define ENOPROTOOPT 92 /* Protocol not available */
#define EPROTONOSUPPORT 93 /* Protocol not supported */
#define ESOCKTNOSUPPORT 94 /* Socket type not supported */
#define EOPNOTSUPP 95 /* Operation not supported on transport endpoint */
#define EPFNOSUPPORT 96 /* Protocol family not supported */
#define EAFNOSUPPORT 97 /* Address family not supported by protocol */
#define EADDRINUSE 98 /* Address already in use */
#define EADDRNOTAVAIL 99 /* Cannot assign requested address */
#define ENETDOWN 100 /* Network is down */
#define ENETUNREACH 101 /* Network is unreachable */
#define ENETRESET 102 /* Network dropped connection because of reset */
#define ECONNABORTED 103 /* Software caused connection abort */
#define ECONNRESET 104 /* Connection reset by peer */
#define ENOBUFS 105 /* No buffer space available */
#define EISCONN 106 /* Transport endpoint is already connected */
#define ENOTCONN 107 /* Transport endpoint is not connected */
#define ESHUTDOWN 108 /* Cannot send after transport endpoint shutdown */
#define ETOOMANYREFS 109 /* Too many references: cannot splice */
#define ETIMEDOUT 110 /* Connection timed out */
#define ECONNREFUSED 111 /* Connection refused */
#define EHOSTDOWN 112 /* Host is down */
#define EHOSTUNREACH 113 /* No route to host */
#define EALREADY 114 /* Operation already in progress */
#define EINPROGRESS 115 /* Operation now in progress */
#define ESTALE 116 /* Stale file handle */
#define EUCLEAN 117 /* Structure needs cleaning */
#define ENOTNAM 118 /* Not a XENIX named type file */
#define ENAVAIL 119 /* No XENIX semaphores available */
#define EISNAM 120 /* Is a named type file */
#define EREMOTEIO 121 /* Remote I/O error */
#define EDQUOT 122 /* Quota exceeded */
#define ENOMEDIUM 123 /* No medium found */
#define EMEDIUMTYPE 124 /* Wrong medium type */
#define ECANCELED 125 /* Operation Canceled */
#define ENOKEY 126 /* Required key not available */
#define EKEYEXPIRED 127 /* Key has expired */
#define EKEYREVOKED 128 /* Key has been revoked */
#define EKEYREJECTED 129 /* Key was rejected by service */
/* for robust mutexes */
#define EOWNERDEAD 130 /* Owner died */
#define ENOTRECOVERABLE 131 /* State not recoverable */
#define ERFKILL 132 /* Operation not possible due to RF-kill */
#define EHWPOISON 133 /* Memory page has hardware error */
#endif
头文件:
函数原型:
void perror(const char *s)
参数:
s: 字符串提示符
输出形式:
const char *s: strerror(errno) //提示符:发生系统错误的原因
返回值:
无返回值
2). 字符串显示错误信息 / strerror
作用:
将错误码以字符串的信息显示出来
头文件:
函数原型:
char *strerror(int errnum);
参数:
errnum: 即errno
返回值:
返回错误码字符串信息
windows中通过免安装eclipse工具包,编译时部分日志:
make[1]: 杩涘叆鐩綍鈥?/home/w600/project/w600_sdk/app鈥?
make[1]: 绂诲紑鐩綍鈥?/home/w600/project/w600_sdk/app鈥?
make[1]: 杩涘叆鐩綍鈥?/home/w600/project/w600_sdk/demo鈥?
make[2]: 杩涘叆鐩綍鈥?/home/w600/project/w600_sdk/demo/console鈥?
make[2]: 绂诲紑鐩綍鈥?/home/w600/project/w600_sdk/demo/console鈥?
make[1]: 绂诲紑鐩綍鈥?/home/w600/project/w600_sdk/demo鈥?
make[1]: 杩涘叆鐩綍鈥?/home/w600/project/w600_sdk/platform/boot/gcc鈥?
make[1]: 绂诲紑鐩綍鈥?/home/w600/project/w600_sdk/platform/boot/gcc鈥?
首先根据make[1]在全工程搜索,根据搜出的内容对比,大概知道乱码的部分内容是“进入目录”和“离开目录”, 尾部的是中文的双引号。所以基本可以知道内容是对的,只是UTF8的中文支持问题了。
window--> perferences-->General-->Appearance-->Cllors and Fonts-->c/c++:
c/c++ build console text font
淘了个D-EJ785,来听一些买来的唱片CD。
没有关机键,按下停止键(实心方块)后,就相当于关机了,可以进行CD或者电池操作。
G-PROTECTION:防止声音跳动,这个一般是机器震动后者光盘划伤造成。
AVLS:AVLS即自动音量限制系统的简称。它的作用就是:控制音量,避免用户在使用耳机收听音乐时因音量过大而导致听力受损。设定为limit时,保护听力,限制最大音量。
1:单首播放
SHUF:随机播放
PGM:按照喜欢顺序播放
BASS1/2:加强的低音模式,BASS2比BASS1低音强