Linux下编译驱动代码时smp_lock.h文件找不到的解决方案
项目中有个驱动代码之前在老版本linux系统中编写的 在移植到 linux-kernel-3.2.0 后,编译时出现一处错误 fatal error: linux/smp_lock.h: No such file or directory
解决办法
将:
#include <linux/smp_lock.h>
替换成:
#include <linux/hardirq.h>
项目中有个驱动代码之前在老版本linux系统中编写的 在移植到 linux-kernel-3.2.0 后,编译时出现一处错误 fatal error: linux/smp_lock.h: No such file or directory
将:
#include <linux/smp_lock.h>
替换成:
#include <linux/hardirq.h>
在写代码的过程中,我发现使用VS2012编译出来的程序默认支持的系统版本略高
刚发现在 Win7+VS2012 编译出来的程序默认PE信息(Optional Header):
导致的结果就是:在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 |
bootstrap.bat
bjam --toolset=msvc-11.0 --build-type=complete
bjam --prefix=D:\third_party\boost install
sudo apt-get install -y libboost-dev libboost-system-dev
以最小化安装的CentOS系统默认是不自动设置IP信息的。 我们想要正常访问网络,第一步就必须先把IP设置好。
[root@centos ~]# dhclient eth0
[root@centos ~]# echo 'GATEWAY="192.168.1.1"' >> /etc/sysconfig/network
[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
[root@centos ~]# echo 'nameserver 8.8.8.8
nameserver 8.8.4.4'> /etc/resolv.conf
[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”
easy_install mysql-python (mix os)
pip install mysql-python (mix os)
apt-get install python-mysqldb (Linux Ubuntu, ...)
cd /usr/ports/databases/py-MySQLdb && make install clean (FreeBSD)
yum install MySQL-python (Linux Fedora, CentOS ...)
对应后面括号内系统执行相应的命令就可以进行安装
李略帅 名字肿么样?
先改了再说,好让搜索引擎方便收集。后面填内容。
以上!
由于ubuntu 12.04默认采用了Unity界面,对于我这种菜鸟来说用起来很是不顺手,所以搜了一下,发现有办法回归gnome界面。
在此记录下供自己以及还不了解这个解决办法的人使用。
sudo apt-get install gnome-session-fallback
下面就是设置了,登出当前用户后进行以下步骤:
现在,输入密码登录看看,是不是已经是熟悉的gnome界面了呢。至此,打完收工。 (o≖◡≖)
#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());
用文本编辑器打开虚拟机的vmx文件 例如:Win7.vmx
解决方法是在文本最后加入如下信息:
ethernet0.virtualDev = "e1000"
记得要先关闭虚拟机哦!
([\s\S]*)
例如想要匹配 “<object name=‘暗黑3’ size=‘12’></object>” 中的name值“暗黑3”
要使用表达式“<object name=’(.+?)’” (非贪婪匹配) 而不能使用“<object name=’(.+)’” (贪婪匹配)。因为这个表达式会匹配出这样的结果“暗黑3’ size=‘12”,这并不是我们想要的。
贪婪模式:
(L)(\w+) “\w+” 将匹配第一个"L"之后的所有字符。结果:“eeeeLeeeeL” (L)(\w+)(L) “\w+” 将匹配第一个"L"和最后一个"L"之间的所有字符。结果:“eeeeLeeee”
非贪婪模式:
(L)(\w+?) “\w+?” 将尽可能少的匹配第一个"L"之后的字符。结果:“e” (L)(\w+?)(L) “\w+?” 将匹配以第一个"L"开头以第二个"L"结尾的字符。结果:“eee”