colorful

zc qq:1337220912

 

virtualbox 安装 64位centos

前前后后差不多一天的时间,终于搞好了.

virtualbox 的无缝模式那真是一个cool, 帅呆了.
还是总结一下吧,免得下次又忘了.

----------------------------------------------------------
virtualbox 上安装64位操作系统,要满足三个条件 1 cpu是64位 2 cpu支持虚拟化(支持的话,可在bios里设置开启) 3:安装的系统为64位
vmware 也要注意这个问题

----------------------------------------------------------
centos 图形安装界面需 628M以上内存,

----------------------------------------------------------
我的 CentOS6.3 装在虚拟机里,在线升级后,突然不能进入桌面了,现象是进度条变成灰白,而启动的服务过程则在 Starting certmonger: [OK] 这里停止。
解决办法很简单,使用 SSH 连入系统,或使用 Ctrl + Alt + Fx 进入虚拟终端,然后执行下面的命令:
    # mv /etc/X11/xorg.conf /etc/X11/old_xorg.conf
接着重启系统,桌面回来了。

----------------------------------------------------------
在安装VBoxAddition 失败的情况, 用下面方法可以解决。 但正解安装后菜单上的无缝模式还是灰的,重装重启了N次还是灰的,后来资料上看到要通过 /etc/X11/xorg.conf来设置分辩率, 就照着设置了一下,结果重启后又卡在Starting certmonger那里,于是用上面的方法 mv了一下。然后重启。我去!!!!!无缝模式就不灰了.....
ps: 后来我又重新装了个centos6.2的, 安装好VBoxAddition 后重启就可以无缝模式了,不需要设置xorg.conf

----------------------------------------------------------
VBoxAddition 安装失败的解决方法
http://blog.csdn.net/lidongtang/article/details/8479900

CentOS6.3是安装在VirtualBox虚拟机上,安装好以后最好再将VBoxAdditions增强功能装上,主要目的是能够在虚拟机和宿主机之间能够共享文件。


1. 更新内核。CentOS 6.3对应的kernel默认为2.6.32-279.el6.i686:

# uname -r 
2.6.32-279.el6.i686

安装增强功能需要kernel-devel包,必须保证kernel-devel和kernel版本的一致。查看软件源中kernel-devel的版本:

复制代码
# yum info kernel-devel
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
* base: mirrors.163.com
* extras: mirrors.163.com
* updates: mirrors.163.com
Available Packages
Name : kernel-devel
Arch : i686
Version : 2.6.32
Release : 279.19.1.el6
Size : 7.6 M
Repo : updates
Summary : Development package for building kernel modules to match the
: kernel
URL : http://www.kernel.org/
License : GPLv2
Description : This package provides kernel headers and makefiles sufficient to
: build modules against the kernel package.

复制代码

当前的kernel-devel版本是2.6.32-279.19.1.e16。因此,必须升级kernel:

# yum update kernel

升级完后必须重启系统,新的kernel才能被使用。

 

2. 安装kernel-devel和gcc。

# yum install kernel-devel gcc gcc-c++

 

3. 安装增强功能。进入增强功能光盘根目录,执行Linux下的安装命令:

复制代码
# ./VBoxLinuxAdditions.run
Verifying archive integrity... All good.
Uncompressing VirtualBox 4.2.4 Guest Additions for Linux..........
VirtualBox Guest Additions installer
Removing installed version 4.2.4 of VirtualBox Guest Additions...
Removing existing VirtualBox non-DKMS kernel modules[确定]
Building the VirtualBox Guest Additions kernel modules
Building the main Guest Additions module[确定]
Building the shared folder support module[确定]
Building the OpenGL support module[确定]
Doing non-kernel setup of the Guest Additions[确定]
Starting the VirtualBox Guest Additions [确定]
Installing the Window System drivers
Installing X.Org Server 1.10 modules[确定]
Setting up the Window System to use the Guest Additions[确定]
You may need to restart the hal service and the Window System (or just restart
the guest system) to enable the Guest Additions.


Installing graphics libraries and desktop services components[确定]

复制代码

posted @ 2013-07-03 18:42 多彩人生 阅读(4785) | 评论 (0)编辑 收藏

RedHat/CentOS安装五笔输入法

使用centos 仓库里的 ibus,我的 CenOS6.3 自带了 ibus 包。打开 System – preferences – Input Method 配置 ibus 开机自启动。

要安装五笔需要安装一个 ibus-table-wubi 包

yum install ibus libusb ibus-libs ibus-table-wubi

安装好后注销一下系统,让ibus读取新的配置,然后就可以在ibus的设置界面添加wubi了

右击桌面右上角的输入法图标,选择 Preferences,切换到 Input Method 选项卡,在 Select a input method 下拉菜单里添加五笔输入法即可。

posted @ 2013-07-02 17:12 多彩人生 阅读(2660) | 评论 (0)编辑 收藏

centos使用yum安装gcc

yum -y install gcc
yum -y install gcc-c++ 
yum install make
-- 或者
yum groupinstall "Development Tools"
-- 或者
yum install gcc gcc-c++ kernel-devel

posted @ 2013-07-02 17:11 多彩人生 阅读(2871) | 评论 (0)编辑 收藏

Linux静态库和动态库

库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行。库分静态库和动态库两种。 

静态库和动态库的区别

1. 静态函数库

    这类库的名字一般是libxxx.a;利用静态函数库编译成的文件比较大,因为整个 函数库的所有数据都会被整合进目标代码中,他的优点就显而易见了,即编译后的执行程序不需要外部的函数库支持,因为所有使用的函数都已经被编译进去了。当 然这也会成为他的缺点,因为如果静态函数库改变了,那么你的程序必须重新编译。

2. 动态函数库

    这类库的名字一般是libxxx.so;相对于静态函数库,动态函数库在编译的时候 并没有被编译进目标代码中,你的程序执行到相关函数时才调用该函数库里的相应函数,因此动态函数库所产生的可执行文件比较小。由于函数库没有被整合进你的 程序,而是程序运行时动态的申请并调用,所以程序的运行环境中必须提供相应的库。动态函数库的改变并不影响你的程序,所以动态函数库的升级比较方便。
linux系统有几个重要的目录存放相应的函数库,如/lib /usr/lib。

静态库的使用

静态库的操作工具:gcc和ar 命令。 

编写及使用静态库 

(1)设计库源码 pr1.c 和 pr2.c 

[root@billstone make_lib]# cat pr1.c 

void print1() 

                printf("This is the first lib src!\n"); 

[root@billstone make_lib]# cat pr2.c 

void print2() 

                printf("This is the second src lib!\n"); 

       (2)  编译.c 文件 

[bill@billstone make_lib]$ cc -O -c pr1.c pr2.c 

[bill@billstone make_lib]$ ls -l pr*.o 

-rw-rw-r--        1 bill          bill                    804    4 月  15 11:11 pr1.o 

-rw-rw-r--        1 bill          bill                    804    4 月  15 11:11 pr2.o 

(3)  链接静态库 

    为了在编译程序中正确找到库文件,静态库必须按照 lib[name].a 的规则命名,如下例中[name]=pr. 

[bill@billstone make_lib]$ ar -rsv libpr.a pr1.o pr2.o 

a - pr1.o 

a - pr2.o 

[bill@billstone make_lib]$ ls -l *.a 

-rw-rw-r--        1 bill          bill                  1822    4 月  15 11:12 libpr.a 

[bill@billstone make_lib]$ ar -t libpr.a 

pr1.o 

pr2.o 

(4)  调用库函数代码 main.c 

[bill@billstone make_lib]$ cat main.c 

int main() 

                print1(); 

                print2(); 

                return 0; 

(5)  编译链接选项 

    -L 及-l 参数放在后面.其中,-L 加载库文件路径,-l 指明库文件名字. 

[bill@billstone make_lib]$ gcc -o main main.c -L./ -lpr 

[bill@billstone make_lib]$ ls -l main* 

-rwxrwxr-x        1 bill          bill                11805    4 月  15 11:17 main 

-rw-rw-r--        1 bill          bill                      50    4 月  15 11:15 main.c 

(6)执行目标程序 

[bill@billstone make_lib]$ ./main 

This is the first lib src! 

This is the second src lib! 

[bill@billstone make_lib]$ 

动态库的使用

编写动态库 

(1)设计库代码 

[bill@billstone make_lib]$ cat pr1.c 

int p = 2; 

void print(){ 

                printf("This is the first dll src!\n"); 

[bill@billstone make_lib]$   

(2)生成动态库 

[bill@billstone make_lib]$ gcc -O -fpic -shared -o dl.so pr1.c 

[bill@billstone make_lib]$ ls -l *.so 

-rwxrwxr-x        1 bill          bill                  6592    4 月  15 15:19 dl.so 

[bill@billstone make_lib]$ 

动态库的隐式调用 

  在编译调用库函数代码时指明动态库的位置及名字,  看下面实例 

[bill@billstone make_lib]$ cat main.c 

int main() 

                print(); 

                return 0; 

[bill@billstone make_lib]$ gcc -o tdl main.c ./dl.so 

[bill@billstone make_lib]$ ./tdl 

This is the first dll src! 

[bill@billstone make_lib]$ 

当动态库的位置活名字发生改变时,  程序将无法正常运行;  而动态库取代静态库的好处之一则是通过更新动态库而随时升级库的内容. 

动态库的显式调用 

  显式调用动态库需要四个函数的支持,  函数 dlopen 打开动态库,  函数 dlsym 获取动态库中对象基址,  函数 dlerror 获取显式动态库操作中的错误信息,  函数 doclose 关闭动态库.

[bill@billstone make_lib]$ cat main.c 

#include <dlfcn.h> 

int main() 

                void *pHandle; 

                void (*pFunc)();                                                    //  指向函数的指针 

                int *p; 

                pHandle = dlopen("./d1.so", RTLD_NOW);                  //  打开动态库 

                if(!pHandle){ 

                                printf("Can't find d1.so \n"); 

                                exit(1); 

                } 

                pFunc = (void (*)())dlsym(pHandle, "print");                //  获取库函数 print 的地址 

                if(pFunc) 

                                pFunc(); 

                else 

                                printf("Can't find function print\n"); 

                p = (int *)dlsym(pHandle, "p");                                      //  获取库变量 p 的地址 

                if(p) 

                                printf("p = %d\n", *p); 

                else 

                                printf("Can't find int p\n"); 

                dlclose(pHandle);                                                                //  关闭动态库 

                return 0; 

[bill@billstone make_lib]$ gcc -o tds main.c –ld1 –L.

此 时还不能立即./tds,因为在动态函数库使用时,会查找/usr/lib、/lib目录下的动态函数库,而此时我们生成的库不在里边。 这个时候有好几种方法可以让他成功运行: 最直接最简单的方法就是把libstr_out.so拉到/usr/lib或/lib中去。 还有一种方法 export LD_LIBRARY_PATH=$(pwd) 另外还可以在/etc/ld.so.conf文件里加入我们生成的库的目录,然后/sbin/ldconfig。 /etc/ld.so.conf是非常重要的一个目录,里面存放的是链接器和加载器搜索共享库时要检查的目录,默认是从/usr/lib /lib中读取的,所以想要顺利运行,我们也可以把我们库的目录加入到这个文件中并执行/sbin/ldconfig 。另外还有个文件需要了解/etc/ld.so.cache,里面保存了常用的动态函数库,且会先把他们加载到内存中,因为内存的访问速度远远大于硬盘的 访问速度,这样可以提高软件加载动态函数库的速度了。

库依赖的查看

使用ldd命令来查看执行文件依赖于哪些库。

该命令用于判断某个可执行的 binary 档案含有什么动态函式库。
[root@test root]# ldd [-vdr] [filename]
参数说明:
--version  打印ldd的版本号
-v --verbose  打印所有信息,例如包括符号的版本信息
-d --data-relocs  执行符号重部署,并报告缺少的目标对象(只对ELF格式适用)
-r --function-relocs  对目标对象和函数执行重新部署,并报告缺少的目标对象和函数(只对ELF格式适用)
--help 用法信息。

如果命令行中给定的库名字包含'/',这个程序的libc5版本将使用它作为库名字;否则它将在标准位置搜索库。运行一个当前目录下的共享库,加前缀"./"。

posted @ 2013-07-01 17:59 多彩人生 阅读(272) | 评论 (0)编辑 收藏

vi 查找不包含[的行

v/[

posted @ 2013-06-28 17:41 多彩人生 阅读(732) | 评论 (0)编辑 收藏

Visual Studio的Output窗口自动滚动行为控制

在使用Visual Studio调试程序察看log输出时,在刚开始Debug时,Output窗口是默认自动滚动的。但是如果调整了Output窗口大小,或者在Output窗口中使用鼠标或者键盘操作进行了导航,则自动滚动将停止。如何恢复自动滚动呢?之前没注意到这个问题,翻了翻MSDN,发现了个快捷键盘操作:Ctrl+END。使用该快捷键操作,就可以恢复Output窗口的自动滚动。

posted @ 2013-06-27 11:42 多彩人生 阅读(363) | 评论 (0)编辑 收藏

给PostgreSQL添加MySQL的unix_timestamp与from_unixtime函数

MySQL的2个常用函数unix_timestamp()与from_unixtime PostgreSQL并不提供,但通过PostgreSQL强大的扩展性可以轻松的解决问题。
话说远在天边,尽在眼前,文档看仔细,问题迎仞解。PostgreSQL 题供extract与date_part取epoch即可

unix_timestamp() = round(date_part('epoch',now()))
from_unixtime(int) = to_timestamp(int)

添加函数unix_timestamp()
CREATE FUNCTION unix_timestamp() RETURNS integer AS $$
SELECT (date_part('epoch',now()))::integer;
$$ LANGUAGE SQL IMMUTABLE;

添加函数from_unixtime()
CREATE FUNCTION from_unixtime(int) RETURNS timestamp AS $$
SELECT to_timestamp($1)::timestamp;
$$ LANGUAGE SQL IMMUTABLE;

posted @ 2013-06-25 13:50 多彩人生 阅读(1696) | 评论 (0)编辑 收藏

bat 设置标题

@echo off
titil haha
pause

posted @ 2013-06-25 10:59 多彩人生 阅读(520) | 评论 (0)编辑 收藏

Batch命令关闭指定标题栏的应用程序窗口

应用场景:
当前用户会话中打开了多个窗口,需要关闭其中某个标题栏包含指定内容的窗口。比如,打开了多个Java应用程序,而只想关闭Apache JMeter。注:这里的关闭是指通过taskkill杀死相应的进程。

脚本:
@echo off
for /f "tokens=2,10,11 delims= " %%l in ('tasklist /v') do (
 
   echo "%%l - %%m"
    if "%%m%%n" == "Apache JMeter" taskkill /f /PID %%m
    if "%%m" == "PACS.jmx" taskkill /f /PID %%l
)

说明:
1. tasklist /v 会将当前运行的进程的详细信息打印出来,其中包含“窗口标题”。
2. for /f "tokens=2,10,11 delims= " 将tasklist /v打印出的每条记录通过空格分组并提出其中的第2,10,和11项
------下面是个有应用体会--------------------
1. 2, 10, 11, 会自动赋给 %%l, %%m, %%n变量
2. 我觉得正确代码是:
@echo off
for /f "tokens=2,10 delims= "%%l in ('tasklist /v') do (
    if "%%m" == "要关闭的应用程序的标题" taskkill /f /PID %%l
)

posted @ 2013-06-25 10:57 多彩人生 阅读(868) | 评论 (0)编辑 收藏

c++取整

 

   1、直接赋值给整数变量。如:
    int i = 2.5; 或 i = (int) 2.5;
    这种方法采用的是舍去小数部分
    2、C/C++中的整数除法运算符“/”本身就有取整功能(int / int),而下面介绍的取整函数返回值是double。整数除法对正数的取整是舍去小数部分,可以用于你的问题。但是整数除法对负数的取整结果和使用的C编译器有关。
    3、使用floor函数。floor(x)返回的是小于或等于x的最大整数。如:
    floor(2.5) = 2
    floor(-2.5) = -3
    4、使用ceil函数。ceil(x)返回的是大于x的最小整数。如:
    ceil(2.5) = 3
    ceil(-2.5) = -2
    floor()是向负无穷大舍入,floor(-2.5) = -3;ceil()是向正无穷大舍入,ceil(-2.5) = -2。floor函数可以用于你的问题

posted @ 2013-06-24 10:46 多彩人生 阅读(6974) | 评论 (0)编辑 收藏

仅列出标题
共25页: First 6 7 8 9 10 11 12 13 14 Last 

导航

统计

常用链接

留言簿(3)

随笔分类

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜