May 2019

Gcc对C语言的拓展功能 之 属性设置

属性设置的关键字是___attribute___, 此关键字允许我们对变量,函数参数,联合体,结构体和C++中的成员进行指定特定属性,其后跟随包含在双括弧里的属性规范,一些属性是为一般变量定义的,一些是为了定义特定目标系统的变量所设置的,而另一些属性是为函数所使用的。

在GNU C 和 C++ 中,我们能够使用函数属性来指明某些函数的特性,以此来帮助编译器优化函数调用和更小心的检查代码正确性。举个例子,我们能够用属性noreturn来指明函数不返回参数,或者使用属性指明返回的值仅取决于其参数的值(const),或取决于其拥有打印样式的参数(format).

我们可以使用属性设置来控制内存放置,代码生成选项或者被注解函数中调用和返回的约定。许多这些属性都是需要指明目标的。举个例子,许多目标支持为定义中断处理函数而用的属性,此通常必须遵循特殊的寄存器用法和返回约定。

[download id=”__attribute__”]…

Continue reading...

VS code – Markdown Pdf一直停在下载Chromium或者下载失败的问题记录

打开设置,搜索:

找到在Markdown-pdf: Executable Path下面的Edit in Settings.json,点击进入

手动设置Chromium的路径,即添加如下语句到json文件中并保存重启使设置生效:

顺便记录打开Markdown Preview的快捷键

打开预览默认是不分屏的,可以自己垂直分屏,让md文档和预览文档同时显现。

相关插件:

Continue reading...

WordPress 修改登录名

1. ssh登录到服务器

2. 登录到mysql

3. 到Wordpress测试

如果不小心登录失败被自己的安全插件拉进黑名单了,可以在ssh上先将对应安全插件文件夹重命名成其他的,再来登录,登录成功后改回原来的插件名,记得将自己的IP加入白名单还有删除掉目前被锁的自己的IP地址。…

Continue reading...

Arch Linux 安装Vmware-workstation遇到的问题记录

安装过程不详解,请参照Archwiki :

https://wiki.archlinux.org/index.php/VMware

主要记录编译安装Vmware的内核模块时遇到的问题和处理方法,对应命令如下

1. -Werror型报错之变量类型错误

类似如下:

没有找到如何取消-Werror参数的办法,但我们可以修改源码解决这个问题。

Vmware内核模块的源码在 /usr/lib/vmware/modules/source下面,先到该目录下并解压源码归档。

用vim打开修改对应报错代码并保存退出:

修改好了再归档回去:

再进行编译安装这条报错信息应该就消失了。

2.-Werror型报错之implicit-function-declaration

示例

通过网上查找我们发现get_ds()已经被抛弃了,参见以下Github网址

https://github.com/torvalds/linux/commit/736706bee3298208343a76096370e4f6a5c55915

所以我们只要将get_ds()都修改成KERNEL_DS即可

保存退出并重新规档:

Continue reading...

Arch Linux 耳机音效配置无法切换到A2DP Sink

1.编辑文件 /etc/pulse/default.pa,注释掉下列语句保存退出

2.打开文件 /usr/bin/start-pulseaudio-x11,找到下列内容并在其后添加语句

3.重启

 …

Continue reading...

触控驱动一直打印dmesg信息:i2c_hid_get_input: incomplete report

Ubuntu网站下报的bug中说问题解决了,不过在我这里并没有。看了以下源码虽然是改了,但问题还在。

This problem did not occur on the previous kernel version so there must have been a change to the “drivers/hid/i2c-hid/i2c-hid.c” file. This seems to be fixed in a recent commit here: https://github.com/torvalds/linux/commit/ef6eaf27274c0351f7059163918f3795da13199c

解决办法是下载当前使用的内核版本源码,直接进行修改编译生成定制内核,修改的源码部分如下:

找到下面这段代码:

dev_err修改成 dev_err_once, 这样有错误信息时只会打印一次。

接下来就是编译安装内核,参考另一篇文章:Arch Linux 从内核源码手动编译定制内核

Continue reading...

Arch Linux 从内核源码手动编译定制内核

NOTE:为方便起见,以下命令都在root模式下运行

一:准备编译环境

二:创建工作目录

三:下载内核源码并解压

  • 下载
  • 解压
  • 跳过验证部分,若要执行验证步骤请参考原文(笔者验证时出现了一些问题,故直接跳过):https://wiki.archlinux.org/index.php/Kernel/Traditional_compilation#Preparation
  • 修改所需变更的源码

四:配置

  • 保证内核树的绝对干净

  • 导出当前内核配置

    打开.config找到 CONFIG_LOCALVERSION在引号中填入版本名,注意不要与 /usr/lib/modules/下的文件夹有重复,不然会覆盖掉原先的内核。

五:编译安装

  • 8线程全速运行
  • 安装内核模块
  • 拷贝内核到 /boot 目录

    一般都是64位机器,32位的就不写了,x86_64换成x86就是32位系统的了。

六:制作初始化内存盘

  • 复制模板preset文件
  • 修改preset文件
  • 举例
  • 自动生成initramfs镜像

    也可以手动生成

七:生成引导文件

  • 用grub-mkconfig命令生成引导文件
Continue reading...

Arch Linux系统修复指南

一:前期准备

拿一个U盘刻录成Arch Linux的启动盘,可以用dd命令,或者到Windows下使用Refus以dd方式刻录成启动盘,注意最好不要使用其他方法,本人试过多个刻写启动盘的软件,很多不是刻好后无法启动,就是启动过程出现各种各样的问题,比如Ultral-ISO。

其他可以刻写成功并启动的还有:unetbootin(Linux和Windows版本都有)

1.  先下载Arch系统的镜像:

Arch系统镜像地址:

Arch官方下载区(可选国家及镜像源地址): https://www.archlinux.org/download/
这里提供一个清华源下载地址:https://mirrors.tuna.tsinghua.edu.cn/archlinux/iso/2019.05.02/
可自行删掉URL后面的日期寻找看这篇文章时候的最新镜像

2.  在Linux下使用dd命令制作启动盘

  • 打开终端,切换到镜像所在目录
  • 插入U盘,注意不要进行挂载操作!!!
    • 如果是系统自动挂载的,不要用鼠标直接弹出或者点击Unmount之类的,请执行以下操作
    • 在终端输入以下命令查看U盘设备号和分区号

      会看到类似以下的输出,一般通过U盘的大小就能知道哪个是U盘设备号。

      比如我的是/dev/sda, 注意设备号后面一定没有数字,/dev/sda1是分区号!!!记住你自己的U盘设备号,等一下要用。
    • 输入以下命令进行U盘弹出:
  • 在终端输入以下命令获取U盘设备号,前面如果已经获取了,请跳过这步。

    看到类似以下输出,找到自己U盘的设备号,比如下面sda即是我U盘的设备号:
  • 使用以下dd命令刻写U盘,注意将if等于号后面的镜像改成你自己的,of等号后面的改成你U盘的设备号,而且是非数字结尾的!!!    不能是/dev/sda1!!!

    还有其他各种各样的方法,请参考Arch Wiki:https://wiki.archlinux.org/index.php/USB_flash_installation_media#BIOS_and_UEFI_bootable_USB

3. 用refus刻录U盘启动盘

如果已经用dd方式制作完成请跳过这步

4. 关机启动到U盘

  • 完全关机后,按电源键开机,在屏幕出现灯光的时候,按几下F12或对应型号电脑进入启动项选择的快捷键(如果不是F12,请网上自行查找或者多试几个其他键,或者进入BIOS手动选择第一启动项)。
  • 进入到开机项选择后,选择U盘启动的项目(按方向键选择),然后回车
  • 等待进入U盘或者回车直接进入(Boot Arch Linux(x86_64))

 5. 连接网络

或者连接的是有线网络的话,执行以下命令获取IP:

全称是Dynamic Host Configuration Protocol Client Daemon,即动态主机配置协议客户端进程

如果是校园网,有些是需要登录操作的,暂时不知道解决办法,一般都是连接无线网络,或者有双系统的话,先切换到另一个系统登录后关机启动到U盘可以不用再登录,网络即可用

6. 同步时间

二:分析问题,解决问题

1. 更新内核后无法启动,报错类似premature end of file /boot/vmlinuz

一般这种情况进行重装内核即可,请执行以下步骤,当然,也可以通过grub选择回退版本内核启动。

  • 查看Linux系统分区并执行挂载操作
Continue reading...

Linux常用软件列表

Speedtest — 终端测速工具

Neofetch — 系统信息工具

Terminator — 强大的终端

Testdisk — 磁盘数据恢复

Adapta-gtk-theme — Gnome 自适应主题

Telegram — 安全加密聊天软件

shadowsocks — 流量加密通信软件

VLC — 视频音频播放

Fcitx-sogoupinyin 搜狗拼音

Dropbox — 云同步网盘

Insync — 谷歌同步网盘第三方客户端

Megasync — 同步网盘

Flameshot — 截图软件

PulseEffects — 音频音效调节软件

Audacity — 音频处理软件

Kdenlive — 视频处理软件

Remarkable — Markdown 实时效果显示编辑软件

Wireshark — 抓包软件

Chromium — 谷歌的开源浏览器

Gnome-tweak-tool

Eletronic-wechat — 微信的第三方Linux版本

LightWorks — 视频编辑软件

Firefox — 火狐浏览器

Okular — Pdf阅读器

Netease-cloud-music — 网易云音乐官方Linux版本

Dconf-editor — Gnome配置软件

Virtualbox — 免费开源好用的虚拟机软件

Eclipse — 多开发环境IDE, 支持C/C++/Java等

Diagram — 画图软件

Xmind — 思维导图工具

Wps — 金山官方办公套件

Htop — 进程检测软件

Youtube-dl — Youtube视频下载软件

You-get — 网页视频文件下载器

Chrome — 谷歌官方闭源浏览器

Gimp — 图片处理软件

GParted — 磁盘管理软件(合并删除等)

Xournal — 草稿软件

STM32CubeMX — STM32项目库文件生成

Jlink — Jlink仿真器驱动

Simplescreenrecoder — 录屏软件

Autojump — 命令行一键直达目录软件

Nvidia + bbswitch +bumblebee — N卡及其管理软件

Curl — 利用URL语法在命令行下工作的文件传输工具

Wget — web get 获取网页文件

Dkms — Dynamic Kernel Module Support

Google-earth-pro — 谷歌地球客户端

Mariadb — 数据库

Ncdu — 磁盘占用文件扫描

Tor-browser — 安全加密浏览器

Vim — 编辑器

Yay & yaourt — Aur包安装器

Steam — Linux游戏盒子

Mlocate — locate软件包,数据库快速查找文件

Glade — Gtk图形界面开发软件

Polipo — socks5转https代理

Proxychains — 指定代理软件

 

Gnome插件:

Alt tab workspace — 当前workspace下atl-tab

Auto Move Windows — 自动移动打开窗口到特定桌面

Dash to dock — 移动Dash到其他位置

Screenshot tool — 截图插件

Topicons plus — 显示软件图标

User Themes — 启动用户主题

kazam — 超好用的录屏软件

screenkey — 屏幕上直接显示键盘输入状态…

Continue reading...

WordPress Crayon Syntax Highlighter 代码主题推荐

Crayon Syntax Highlighter提供了代码高亮和各种主题,但很多都不是特别有美感。

一路试下来,发现只有几个看得入眼,在这推荐一下。

1. Tomorrow Night

2. Son of Obsidian

3. Monokai

4. Mm Dark Blue

5. Familiar

 …

Continue reading...