Gamepad & WSN

Category Archives: ARM_Linux

解决Cygwin “error while loading shared libraries”

Author:Gamepader    IN:ARM_Linux    Tags: , ,     评论: 0    超过100人围观

今天在网易源安装了最新版的Cygwin,刚刚在Cygwin下执行curl的时候,出现如下提示信息

1
$curl: error while loading shared libraries: ?: cannot open shared object file: No such file or directory

解决办法:
第一步.使用cygcheck检查:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
$cygcheck curl
C:\Dell\Cygwin\bin\curl.exe
C:\Dell\Cygwin\bin\cygcurl-4.dll
  C:\Dell\Cygwin\bin\cyggcc_s-1.dll
    C:\Dell\Cygwin\bin\cygwin1.dll
      C:\Windows\system32\KERNEL32.dll
        C:\Windows\system32\API-MS-Win-Core-RtlSupport-L1-1-0.dll
        C:\Windows\system32\ntdll.dll
        C:\Windows\system32\KERNELBASE.dll
        C:\Windows\system32\API-MS-Win-Core-ProcessThreads-L1-1-0.dll
        C:\Windows\system32\API-MS-Win-Core-Heap-L1-1-0.dll
        C:\Windows\system32\API-MS-Win-Core-Memory-L1-1-0.dll
        C:\Windows\system32\API-MS-Win-Core-Handle-L1-1-0.dll
        C:\Windows\system32\API-MS-Win-Core-Synch-L1-1-0.dll
        C:\Windows\system32\API-MS-Win-Core-File-L1-1-0.dll
        C:\Windows\system32\API-MS-Win-Core-IO-L1-1-0.dll
        C:\Windows\system32\API-MS-Win-Core-ThreadPool-L1-1-0.dll
        C:\Windows\system32\API-MS-Win-Core-LibraryLoader-L1-1-0.dll
        C:\Windows\system32\API-MS-Win-Core-NamedPipe-L1-1-0.dll
        C:\Windows\system32\API-MS-Win-Core-Misc-L1-1-0.dll
        C:\Windows\system32\API-MS-Win-Core-SysInfo-L1-1-0.dll
        C:\Windows\system32\API-MS-Win-Core-Localization-L1-1-0.dll
        C:\Windows\system32\API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll
        C:\Windows\system32\API-MS-Win-Core-String-L1-1-0.dll
        C:\Windows\system32\API-MS-Win-Core-Debug-L1-1-0.dll
        C:\Windows\system32\API-MS-Win-Core-ErrorHandling-L1-1-0.dll
        C:\Windows\system32\API-MS-Win-Core-Fibers-L1-1-0.dll
        C:\Windows\system32\API-MS-Win-Core-Util-L1-1-0.dll
        C:\Windows\system32\API-MS-Win-Core-Profile-L1-1-0.dll
        C:\Windows\system32\API-MS-Win-Security-Base-L1-1-0.dll
  C:\Dell\Cygwin\bin\cygcrypto-1.0.0.dll
    C:\Dell\Cygwin\bin\cygz.dll
  C:\Dell\Cygwin\bin\cyggssapi-3.dll
    C:\Dell\Cygwin\bin\cygheimntlm-0.dll
      C:\Dell\Cygwin\bin\cygkrb5-26.dll
        C:\Dell\Cygwin\bin\cygasn1-8.dll
          C:\Dell\Cygwin\bin\cygroken-18.dll
            C:\Dell\Cygwin\bin\cygcrypt-0.dll
          C:\Dell\Cygwin\bin\cygcom_err-2.dll
        C:\Dell\Cygwin\bin\cygwind-0.dll
        C:\Dell\Cygwin\bin\cyghx509-5.dll
        C:\Dell\Cygwin\bin\cygintl-8.dll
          C:\Dell\Cygwin\bin\cygiconv-2.dll
        C:\Dell\Cygwin\bin\cygsqlite3-0.dll
        C:\Dell\Cygwin\bin\cygheimbase-1.dll
  C:\Dell\Cygwin\bin\cygidn-11.dll
  C:\Dell\Cygwin\bin\cyglber-2-4-2.dll
  C:\Dell\Cygwin\bin\cygldap-2-4-2.dll
    C:\Dell\Cygwin\bin\cygssl-1.0.0.dll
  C:\Dell\Cygwin\bin\cygssh2-1.dll
C:\Dell\Cygwin\bin\cygmetalink-3.dll
  C:\Dell\Cygwin\bin\cygexpat-1.dll
cygcheck: track_down: could not find cygsasl2-2.dll

发现是缺少了cygsasl2-2.dll
第二步.分析丢失的模块并安装:
有文件名分析丢失的模块名字应该为cygsasl2,当然也有可能是cygsasl,cyg,sasl2等,一个个都使用Cygwin的Setup.exe安装上,发现丢失的模块名字应该是sasl2,点选install,问题解决。

02-28
2013

智能家居监控中心设计思路-WEB控制台

Author:Gamepader    IN:ARM_Linux, 创意    Tags: , , ,     评论: 0    超过72人围观

初步设想是做一个包含灯光(电源)控制 红外线防盗报警、 摄像头实时监控、 PM2.5检测、 温度探测湿度探测噪声测量等功能于一体的综合式智能家居监控中心。

本监控中心可以实现的功能:

  • 根据光照强度自动控制室内灯光;
  • 房门、窗户布置红外防盗线;
  • 摄像头检测到有动作时自动拍照并上传至网络;
  • 摄像头可以当做网络监控器使用;
  • PM2.5空气浮尘检测;
  • 环境温湿度探测,火灾报警;
  • 环境噪声检测;
  • 有线或者无线方式加入局域网;
  • 可以通过2.4G网络连接处于WSN(Wireless Sensor Network)中的各个传感器;
  • 能够按需添加不同的控制模块与传感器探测模块,如蓝牙模块、超声波模块、控制四驱小车搭载其主体运动等;

给出DEMO版本链接://liyvhg.vicp.net:808/,请“鼠”下留情,不要恶意控制

02-17
2013

C语言中宏定义的一个特殊用法

Author:Gamepader    IN:ARM_Linux    Tags: ,     评论: 0    超过49人围观

在程序调试时,我们经常需要输出一些调试信息,当调试完毕后,就不再需要使用了。那怎么快速的在调试状态和发布状态切换呢?通常我们使用预编译加宏定义来处理这个问题,例如:

1
2
3
#ifdef DEBUG
调试代码
#endif

如果我们使用printf来显示一些调试信息,那么每个地方都加上#ifdef和#endif就很麻烦了。我们可以定义一个DbgPrintf的函数来专门处理这些事情,只在DbgPrintf函数内放上#ifdef和#endif就行了。但是这样代码在运行时,还是有调用一次函数的,浪费了时间。那么可不可以利用宏定义,实现完全没有编译代码产生的宏呢?
可以尝试下面的宏代码:

1
2
3
4
5
6
#ifdef DEBUG
#define DbgPrintf printf
#else
#define DbgPrintf /\
/DbgPrintf

#endif

如果DEBUG已经定义了,那么不用说,当然是用printf去代替DbgPrintf了。
下面只分析DEBUG未定义的情形,这个宏定义实际上是将“DbgPrintf”定义成了“//DbgPrintf”,由于续行符的作用,#define定义时不会发现注释符“//”,但是在展开到代码之后,就成了注释符“//”了,也就是说,如果你原来的代码是DbgPrintf("%d",x);,经过这个宏展开后成了//DbgPrintf("%d",x);,相当于自动在前面加了注释符“//”。要注意的是,续行符后面的“/”一定要顶格写,否则就不是“//”了。另外,这个宏只能单独一行使用,因为它将该行后面的代码都注释掉了。
(转载自computer00)

01-30
2013
loading...