由于socat 并没有在 centos 6 的默认源中. 无法直接安装.
有两个方法可以安装.
第一: 可以自己下载并安装这两个软件包:
第二: 可以添加源,然后yum 安装.
curl http://www.convirture.com/repos/definitions/rhel/6.x/convirt.repo > /etc/yum.repos.d/convirt.repo
yum update
yum install socat
zypper update 时出现以下错误:
bash-4.2# zypper update -y
Retrieving repository 'NON-OSS' metadata ---------------------------------------------------------------------------------------------------[\]
File '/media.1/media' not found on medium 'http://download.opensuse.org/distribution/leap/42.1/repo/non-oss/'
Abort, retry, ignore? [a/r/i/? shows all options] (a): a
Retrieving repository 'NON-OSS' metadata ...............................................................................................[error]
Repository 'NON-OSS' is invalid.
[non-oss|http://download.opensuse.org/distribution/leap/42.1/repo/non-oss/] Valid metadata not found at specified URL
Please check if the URIs defined for this repository are pointing to a valid repository.
Warning: Skipping repository 'NON-OSS' because of the above error.
Retrieving repository 'OSS' metadata -------------------------------------------------------------------------------------------------------[|]
File '/media.1/media' not found on medium 'http://download.opensuse.org/distribution/leap/42.1/repo/oss/'
Abort, retry, ignore? [a/r/i/? shows all options] (a): a
Retrieving repository 'OSS' metadata ...................................................................................................[error]
Repository 'OSS' is invalid.
[oss|http://download.opensuse.org/distribution/leap/42.1/repo/oss/] Valid metadata not found at specified URL
Please check if the URIs defined for this repository are pointing to a valid repository.
Warning: Skipping repository 'OSS' because of the above error.
是因为 oss
和 non-oss
源无效了. 只需要移除这两个源即可.
zypper rr OSS NON-OSS
pfsense 可以手动安装 freebsd 的软件包. 只需要三步.
1. 在这个页面搜索并复制软件包的链接: https://pkg.freebsd.org/freebsd:10:x86:64/latest/All/
2. 执行 pkg add
:
pkg add https://pkg.freebsd.org/freebsd:10:x86:64/latest/All/socat-1.7.3.2_2.txz
rehash
rehash
参考资料:
1. https://forum.pfsense.org/index.php?topic=46116.0
2. https://doc.pfsense.org/index.php/Installing_FreeBSD_Packages
c++ 中写宽字符串常量前需要带字母L
:
L"hello world"
这个 L
是宏吗. 为什么没有圆括号.
这里有两个解释:
https://stackoverflow.com/questions/13379451/how-is-l-macro-defined
https://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/18829987-acaf-49f6-a63c-14fdb9793a4d/ltext-macro-recognized-as-const-char-in-mfc-application?forum=vclanguage
简单的说, L
不是宏. 而是一个编译器定义的前缀. 其作用相当于用于浮点数的 f
后缀:
1.34f
只是一个是前缀, 一个是后缀而已. 编译器会自动识别.
很久以前就注意到 ubuntu 的 网卡名字不再是 eth0 了.
这里有一个争论 http://opensuse-factory.opensuse.narkive.com/rGGZFhpR/13-1-why-network-eth0-is-named-instead-ens33
这里有正式的解释: https://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/
简单的来讲, eth0 的名字是内核取的, 而这个名字是受驱动程序的先后顺序决定的. 多个网卡的话, 每次重启 ethx 后面的 数字可能会随机变化.
这也是改名的根本原因.
改名是为了让名字固定下来. 这个名字是 systemd 取的, 来自主板上端口顺序. 所以相对固定.
当然还有其他好处若干. 请阅读上面的链接.
在排除一下 cpp 编译错误时, 可能需要搞清楚文件包含关系.
linux:
gcc -M showtime.c my.cpp
windows:
cl.exe /showIncludes my.cpp
参考: