在写代码的过程中,我发现使用VS2012编译出来的程序默认支持的系统版本略高

刚发现在 Win7+VS2012 编译出来的程序默认PE信息(Optional Header):

  • Major SubSystem Version = 6
  • Minor SubSystem Version = 0

导致的结果就是:在WinXP中运行便会提示 不是有效的Win32应用程序

当时还以为是自己搞错编译选项,将程序编译成x64的了。
结果后来使用PE工具才发现的这个问题。

解决方案

右击项目 -> 属性 -> 配置属性 -> 链接器 -> 系统 -> 所需最低版本 填入”5.01

参考内容

http://msdn.microsoft.com/en-us/library/fcc1zstk(v=vs.110).aspx

Subsystem Minimum Default
BOOT_APPLICATION 1.0 1.0
CONSOLE 5.01 (x86) 5.02 (x64) 6.02 (ARM) 6.00 (x86, x64) 6.02 (ARM)
WINDOWS 5.01 (x86) 5.02 (x64) 6.02 (ARM) 6.00 (x86, x64) 6.02 (ARM)
NATIVE (with DRIVER:WDM) 1.00 (x86) 1.10 (x64, ARM) 1.00 (x86) 1.10 (x64, ARM)
NATIVE (without /DRIVER:WDM) 4.00 (x86) 5.02 (x64) 6.02 (ARM) 4.00 (x86) 5.02 (x64) 6.02 (ARM)
POSIX 1.0 19.90
EFI_APPLICATION, EFI_BOOT_SERVICE_DRIVER, EFI_ROM, EFI_RUNTIME_DRIVER 1.0 1.0

Windows下编译安装

生成bjam

1
bootstrap.bat

编译

1
bjam --toolset=msvc-11.0 --build-type=complete

安装

1
bjam --prefix=D:\third_party\boost install

Ubuntu仅安装开发包

1
sudo apt-get install -y libboost-dev libboost-system-dev

以最小化安装的CentOS系统默认是不自动设置IP信息的。
我们想要正常访问网络,第一步就必须先把IP设置好。

设置IP为自动获取:

1
[root@centos ~]# dhclient eth0

设置IP为手动填写:

  1. 设置网关
1
[root@centos ~]# echo 'GATEWAY="192.168.1.1"' >> /etc/sysconfig/network
  1. 设置网卡信息

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    [root@centos ~]# echo 'DEVICE="eth0"
    HWADDR="00:0C:29:28:F9:88"
    NM_CONTROLLED="yes"
    ONBOOT="yes"
    BOOTPROTO="none"
    BROADCAST="192.168.1.255"
    IPADDR="192.168.1.120"
    NETMASK="255.255.255.0"
    NETWORK="192.168.1.0"
    IPV6INIT="yes"
    IPV6_AUTOCONF="yes"
    TYPE="Ethernet"' > /etc/sysconfig/network-scripts/ifcfg-eth0
  2. 设置DNS

    1
    2
    [root@centos ~]# echo 'nameserver 8.8.8.8
    nameserver 8.8.4.4'> /etc/resolv.conf
  3. 重启网络

    1
    2
    3
    4
    [root@centos ~]# service network restart
    Shutting down loopback interface: [ OK ]
    Bringing up loopback interface: [ OK ]
    Bringing up interface eth0: [ OK ]


如果在python程序执行时遇到这个错误提示“No module named MySQLdb

这个说明缺少对应的库,解决办法是:

mix os (easy_install)

1
easy_install mysql-python (mix os)

mix os (pip)

1
pip install mysql-python (mix os)

Ubuntu

1
apt-get install python-mysqldb (Linux Ubuntu, ...)

FreeBSD

1
cd /usr/ports/databases/py-MySQLdb && make install clean (FreeBSD)

Fedora, CentOS

1
yum install MySQL-python (Linux Fedora, CentOS ...)

对应后面括号内系统执行相应的命令就可以进行安装

由于ubuntu 12.04默认采用了Unity界面,对于我这种菜鸟来说用起来很是不顺手,所以搜了一下,发现有办法回归gnome界面。

安装

在此记录下供自己以及还不了解这个解决办法的人使用。

  1. 命令行的解决办法:

    1
    sudo apt-get install gnome-session-fallback
  2. 去软件中心搜索“gnome-panel”并安装之

设置

下面就是设置了,登出当前用户后进行以下步骤:

  1. 在登录用户界面选用户名右边的配置按钮
    gnome设置第一步
  2. 选择“GNOME Classic”
    gnome设置第二步

现在,输入密码登录看看,是不是已经是熟悉的gnome界面了呢。至此,打完收工。
(o≖◡≖)

下面代码就可以生成1-100区间的随机数:

1
2
3
4
5
6
7
#include <vector>
#include <algorithms>
std::vector<int> random_numbers;
for (unsigned int i = 0; i < 100; ++i)
random_numbers.push_back(i + 1);
std::random_shuffle(random_numbers.begin(), random_numbers.end());