原文发布于hellogcc网站。
最近在编译一个开源项目时,遇到这个编译错误:
fatal error: 'libelf.h' file not found
#include <libelf.h>
^
1 error generated.
解决方法是安装elfutils-libelf-devel
这个软件包:
yum install elfutils-libelf-devel
或:
dnf install elfutils-libelf-devel
原文发布于hellogcc网站。
最近在编译一个开源项目时,遇到这个编译错误:
fatal error: 'libelf.h' file not found
#include <libelf.h>
^
1 error generated.
解决方法是安装elfutils-libelf-devel
这个软件包:
yum install elfutils-libelf-devel
或:
dnf install elfutils-libelf-devel
git clone
命令用来拷贝一个已经存在的代码仓库。Clone
操作会自动创建一个指向原始代码仓库的远程连接(名字是origin
),这会很方便操作中央代码库。git
的合作开发模式是基于“代码仓库-代码仓库”(repository-to-repository
),不同于SVN
的从工作拷贝向中央代码仓库提交代码的方式,git
的push
或pull
操作都是从一个代码仓库到另一个代码仓库。
使用:
a)git clone <repo>
把位于repo
的代码仓库复制到本机。
b)git clone <repo> <directory>
把位于repo
的代码仓库复制到本机的directory
。
例子:
[root@CentOS ~]# git clone https://github.com/sharklinux/shark
Cloning into 'shark'...
remote: Counting objects: 1003, done.
remote: Total 1003 (delta 0), reused 0 (delta 0), pack-reused 1003
Receiving objects: 100% (1003/1003), 21.43 MiB | 304.00 KiB/s, done.
Resolving deltas: 100% (245/245), done.
[root@CentOS ~]# ls
anaconda-ks.cfg shark
执行git clone https://github.com/sharklinux/shark
在本机初始化一个shark
文件夹(注意没有.git
后缀,表明这是一个非bare
属性的本地拷贝),文件夹里包含了整个shark
代码仓库的所有内容。
参考资料:
git clone。
中午变化了一下博客主题,结果就登不上了。提示错误如下:
Warning: Cannot modify header information - headers already sent by (output started at /home/to/public_html/en/wp-content/themes/nordby/functions.php:78) in /home/to/public_html/en/wp-login.php on line 418
Warning: Cannot modify header information - headers already sent by (output started at /home/to/public_html/en/wp-content/themes/nordby/functions.php:78) in /home/to/public_html/en/wp-login.php on line 431
问题出在/home/to/public_html/en/wp-content/themes/nordby/functions.php
这个文件上。这是错误的文件截图,可以看到结尾有空白行:
修改成这样就可以了:
参考资料:
Cannot modify header information – headers already sent by …。
git init
命令用来创建一个新的Git
仓库。它既可以用来完全初始化一个新的空仓库,也可以把一个已经存在的,没有版本控制的仓库转成Git
仓库。执行git init
命令会在指定工程的根目录下创建一个.git
的子文件夹。除了.git
子文件夹,工程的其它文件都不会改变。
使用:
a)git init
把当前目录变成一个Git
仓库。
b)git init <directory>
在指定的目录下创建Git
仓库。执行这个命令将会创建一个叫directory
的新文件夹,在这个文件夹里只有.git
子文件夹。
c)git init --bare <directory>
初始化一个没有工作文件夹的空的Git
仓库。用来共享的Git
仓库应该始终使用--bare
选项来创建。通常情况下,用--bare
选项初始化的仓库以.git
作为后缀。举个例子,使用--bare
选项创建的project
仓库应该叫project.git
。
比较一下git init <directory>
和git init --bare <directory>
:
首先执行git init linux
:
[root@CentOS ~]# git init linux
Initialized empty Git repository in /root/linux/.git/
[root@CentOS ~]# ls -alt linux/
total 8
dr-xr-x---. 5 root root 4096 Jun 2 12:53 ..
drwxr-xr-x. 7 root root 4096 Jun 2 12:42 .git
drwxr-xr-x. 3 root root 17 Jun 2 12:42 .
[root@CentOS ~]# ls -alt linux/.git
total 20
drwxr-xr-x. 7 root root 4096 Jun 2 12:42 .
drwxr-xr-x. 4 root root 28 Jun 2 12:42 objects
-rw-r--r--. 1 root root 92 Jun 2 12:42 config
-rw-r--r--. 1 root root 23 Jun 2 12:42 HEAD
drwxr-xr-x. 2 root root 20 Jun 2 12:42 info
drwxr-xr-x. 2 root root 4096 Jun 2 12:42 hooks
-rw-r--r--. 1 root root 73 Jun 2 12:42 description
drwxr-xr-x. 2 root root 6 Jun 2 12:42 branches
drwxr-xr-x. 3 root root 17 Jun 2 12:42 ..
drwxr-xr-x. 4 root root 29 Jun 2 12:42 refs
接着执行git init --bare bsd
:
[root@CentOS ~]# git init --bare bsd
Initialized empty Git repository in /root/bsd/
[root@CentOS ~]# ls -lt bsd
total 16
drwxr-xr-x. 4 root root 28 Jun 2 13:01 objects
-rw-r--r--. 1 root root 66 Jun 2 13:01 config
drwxr-xr-x. 2 root root 6 Jun 2 13:01 branches
-rw-r--r--. 1 root root 73 Jun 2 13:01 description
-rw-r--r--. 1 root root 23 Jun 2 13:01 HEAD
drwxr-xr-x. 2 root root 4096 Jun 2 13:01 hooks
drwxr-xr-x. 2 root root 20 Jun 2 13:01 info
drwxr-xr-x. 4 root root 29 Jun 2 13:01 refs
可以看到所有的文件信息都直接创建在bsd
目录下,而没有创建在.git
文件夹下。
参考文档:
git init
使用GNU screen
创建多个工作会话时,使用时可能会遇到会话屏幕闪烁的问题。比如在命令行使用backspace
把所有字符都删除完以后,或是man
某个命令翻到最后一页还接着往下翻,等等。原因是visual bell
在捣鬼。解决方法如下:
(1)编辑“~/.screenrc
”文件;
(2)加入以下行:
vbell_msg "bell: window ~%" # Message for visual bell
vbellwait 2 # Seconds to pause the screen for visual bell
vbell off # Turns visual bell off
参考文档:
http://stackoverflow.com/questions/897358/gnu-screen-refresh-problem。
本文参考自Lttng
的官方文档。
(1)安装Lttng
:
我使用的是CentOS
,所以按照RHEL
的文档,使用yum
方式安装:
a)构建package
相关信息:
wget -P /etc/yum.repos.d/ http://packages.efficios.com/repo.files/EfficiOS-RHEL7-x86-64.repo
rpmkeys --import http://packages.efficios.com/rhel/repo.key
yum updateinfo
b)接下来安装lttng
软件包:
yum install lttng-ust-devel #安装 lttng-ust会同时安装liburcu0
yum install kmod-lttng-modules
yum install lttng-tools-devel
yum install babeltrace-devel
(2)测试一下:
lttng create my-session
lttng enable-event --kernel --all
lttng start
lttng stop
lttng stop
lttng destroy
接着执行ls
命令:
[root@CentOS ~]# ls
anaconda-ks.cfg lttng-traces
可以看到抓的trace
都在lttng-traces
这个文件夹里。
今天是“六一”儿童节,首先祝大家节日快乐,永葆童心!另外,我设计的第一款*nix geek
T恤也于今天正式上线了:*NIX Geek 主题T恤。
我使用过多种*nix
操作系统:Soalris
,Linux
,Mac OS X
等等,也一直对*nix
上的debugging
和tracing
工具感兴趣:DTrace
,Lttng
,perf
等等。所以我萌生了为这些工具设计一款T恤的想法。
Deirdré Straughan
女士(个人网站:http://www.beginningwithi.com/)为这些工具设计了以矮种马(pony
)为原型的吉祥物(其实很多工具是有自己的官方吉祥物的,像Lttng
,systemtap
等等。但是由于我想保证整个T恤风格的统一,所以决定都使用pony
作为原型。),所以我试探性地向Deirdré Straughan
女士发邮件,表达了希望可以使用这些吉祥物来设计T恤的想法。没想到Deirdré Straughan
很快回了邮件,不仅表示可以免费使用这些图案,而且还提供了一些质量很高的插图。于是我就利用了一个周末的时间,设计好了这件T恤的原始图案,发给了DreamLab
团队。经过DreamLab
团队的一个星期的辛勤工作,T恤终于于今天上线了!
这款T恤的定价是66
元,个人觉得是一个“良心价”。除去所有成本(生产,物流,客户支持等等),其实一件T恤的利润已经很低了。目前想到的收入用途主要有两个:
(1)负责为Deirdré Straughan
女士邮寄T恤的快递费;
(2)Deirdré Straughan
女士不会从T恤中收取一分钱,她希望如果可能的话,把收入的一部分捐给General Zoi,也就是她用来设计吉祥物的网站。
最后自我推销一下吧:“如果你是一个*nix geek
,可以考虑购买这一款T恤,穿上它也许可以让你显得与众不同!”