Error

C++博客 首页 新随笔 联系 聚合 管理
  217 Posts :: 61 Stories :: 32 Comments :: 0 Trackbacks

#

     摘要: date显示时间tsselect设置时区本文是基本是[Linux的时间设置与同步(NTP)]的原文,只在一些地方更新和完善了一下。  一、时间和时区  如果有人问你说现在几点? 你看了看表回答他说晚上8点了. 这样回答看上去没有什么问题,但是如果问你的这个人在欧洲的话那么你的回答就会让他很疑惑,因为他那里还太阳当空呢.  这里就有产生了一个如何定义时间的问题. 因为在地球环绕太阳旋转的24个小时中...  阅读全文
posted @ 2014-01-15 13:58 Enic 阅读(289) | 评论 (0)编辑 收藏

实际上我就是用默认的bjam install,偷懒了,,,
linux默认头文件会放到/usr/local/include下面  lib放到/usr/local/lib下面





1.下载 boost-1_52 http://sourceforge.net/projects/boost/files/boost/1.52.0/
2. 将文件解压在/usr/local/目录下
3. 进入/usr/local/boost-1_52_0/ 目录, 在terminal中输入
             ./bootstrap.sh
4.进入/usr/local/boost-1_52_0/ 目录,在terminal中输入
            sudo ./bjam  --layout=versioned --build-type=complete --toolset=gcc install 
5.添加环境变量(刚改完要重启或者注销一下来更新刚修改过的环境变量)
   两种方法:
   (1)修改/etc/profie文件 末尾添加
            export BOOST_INCLUDE=/usr/local/include/boost-1_52
            export BOOST_LIB=/usr/local/lib
    (2)在/etc/profile.d/ 中新建一个shell文件boost.sh
             #!/bin/sh 
             export BOOST_INCLUDE=/usr/local/include/boost-1_52
             export BOOST_LIB=/usr/local/lib






1.Boost库的下载地址:http://sourceforge.net/projects/boost/files/boost/1.44.0/ 
2.Boost库的编译,安装 
下载boost_1_44_0.tar.gz    
tar -zxvf boost_1_44_0.tar.gz  
然后进入解压缩后的文件夹编译boost的编译器jam 
cd boost_1_44_0\tools\jam 
./build_dist.sh 
编译完后在这个目录下有编译出的bjam文件 
boost_1_44_0\tools\jam\stage\bin.linuxx86 
把它copy到boost_1_44_0 然后在这个目录下运行命令编译: 
./bjam "-sTOOLS=gcc" "--includedir=/usr/include" "--libdir=/usr/lib/boost" install 
./bjam --toolset=gcc --includedir=/usr/local/include --libdir=/usr/local/lib/boost install 
开始编译,等待编译完成,需很长时间。 
关于bjam的后面的参数的设置: 
-sTOOLS=gcc  指定编译器为GCC 
--includedir=/usr/include/  指定头文件的安装目录,我安装在/usr/include下。如果安装成功,将在/usr/include/生成目录boost_1_33,该目录下就是boost的头文件目录 
--libdir=/usr/lib/boost  指定boost的库文件的存放位置, 生成的 .a .so 文件将放在该目录下 
install 编译并安装boost
3.注意事项 
安装完成后,为了每次使用时不用输入太多的目录,可以在/etc/profile中加入: 
BOOST_INCLUDE=/usr/include/boost 
BOOST_LIB=/usr/lib/boost 
export BOOST_INCLUDE BOOST_LIB 
以后在编译程序时,只需要用:-I$BOOST_INCLUDE -L$BOOST_LIB 即可,还要使用-l指定了链接库。 
也许会出现编译时或者运行时找不到动态库(*.so)的错误 
把/usr/lib/boost追加到动态链接库配置文件/etc/ld.so.conf中,然后直接运行ldconfig,即可! 
{仅测试成功一次的方式:./bjam --toolset 
lib:/newdisk/hotevent/boost_1_44_0/stage/lib 
include:/newdisk/hotevent/boost_1_44_0 
ln -s /newdisk/hotevent/boost_1_44_0  /usr/include/boost 
并把/newdisk/hotevent/boost_1_44_0/stage/lib加入到/etc/ld.so.conf,用命令ldconfig更新一下。 
在编译程序时直接用g++ re.cpp -lboost_regex -o re即可!} 
4.Boost库的使用举例 
第一个测试文件是lex.cpp: 
#include <boost/lexical_cast.hpp> 
#include <iostream> 
int main() 
using boost::lexical_cast; 
int a = lexical_cast<int>("123"); 
double b = lexical_cast<double>("123.12"); 
std::cout<<a<<std::endl; 
std::cout<<b<<std::endl; 
return 0; 
}编译:g++ lex.cpp -I$BOOST_INCLUDE -o lex 
运行:./lex 
输出: 
123 
123.12 
我们的第二个例子是re.cpp: 
#include <iostream> 
#include <string> 
#include <boost/regex.hpp> 
int main() { 
std::string s = "who,lives:in-a,pineapple under the sea?"; 
boost::regex re(",|:|-|\\s+"); 
boost::sregex_token_iterator 
p(s.begin( ), s.end( ), re, -1); 
boost::sregex_token_iterator end; 
while (p != end) 
std::cout << *p++ << '\n'; 
}编译:g++ re.cpp -I$BOOST_INCLUDE -lboost_regex -o re运行:./re输出: 
who 
lives 
in 
pineapple 
under 
the 
sea? 
附注:为了让动态链接库为系统所共享,还需运行动态链接库的管理命令--ldconfig 
ldconfig 命令的用途,主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态 链接库(格式如前介绍,lib*.so*),进而创建出动态装入程序(ld.so)所需的连接和缓存文件.缓存文件默认为 /etc/ld.so.cache,此文件保存已排好序的动态链接库名字列表.
posted @ 2014-01-15 13:43 Enic 阅读(1177) | 评论 (0)编辑 收藏

1.linux动态链接库管理机制和win比起来只是半成品

2.luabind对函数绑定太敏感了,返回值少了一个&就直接罢工了

3.boost::filesystem 1.4 到1.5的时候有了大的变化,应该是支持了unicode,然后坑来了,新版win上默认是unicode所以string返回的是string值类型,而wstring默认返回&类型,这个使用luabind绑定的时候应为模版的原因使用string&绑定string的时候感知不到,直接core down了,,,
关于第三点:vc是能感知到的gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-4)这个GCC是他俩的感知不到
posted @ 2014-01-15 13:07 Enic 阅读(227) | 评论 (0)编辑 收藏

第一反应是:居然没有对应的.so 和.a,dll搜索path居然是编译阶段就定好了。

好吧,都是可以控制的


静态库:

 对函数库的链接是放在编译时期(compile time)完成的。所有相关的对象文件(object file)与牵涉到的函数库(library)被链接合成一个可执行文件(executable file),即将动态库内容拷贝到自己需要的程序中,所以程序在运行时,与函数库再无瓜葛,所以这些函数库被成为静态库(static libaray),通常文件名为“libxxx.a”的形式。
 
       在linux环境中, 使用ar命令创建静态库文件.如下是命令的选项: 
          d -----从指定的静态库文件中删除文件 
          m -----把文件移动到指定的静态库文件中 
          p -----把静态库文件中指定的文件输出到标准输出 
          q -----快速地把文件追加到静态库文件中 
          r -----把文件插入到静态库文件中 
          t -----显示静态库文件中文件的列表 
          x -----从静态库文件中提取文件 
          还有多个修饰符修改以上基本选项,详细请man ar 以下列出三个: 
          a -----把新的目标文件(*.o)添加到静态库文件中现有文件之后 
          b -----***************************************之前 
          v -----使用详细模式       ar 命令的命令行格式如下:       ar [-]{dmpqrtx}[abcfilNoPsSuvV] [membername] [count] archive files...      eg:         ar -crs hello.a hello.c
动态库 :
 库函数的链接载入推迟到程序运行的时期(runtime)。这就是如雷贯耳的动态链接库(dynamic link library)技术。
动态链接库的特点与优势:
 1. 可以实现进程之间的资源共享。
 某个程序的在运行中要调用某个动态链接库函数的时候,操作系统首先会查看所有正在运行的程序,看在内存里是否已有此库函数的拷贝了。如果有,则让其共享那一个拷贝;只有没有才链接载入。这样的模式虽然会带来一些“动态链接”额外的开销,却大大的节省了系统的内存资源。C的标准库就是动态链接库,也就是说系统中所有运行的程序共享着同一个C标准库的代码段。
 2. 将一些程序升级变得简单。用户只需要升级动态链接库,而无需重新编译链接其他原有的代码就可以完成整个程序的升级
 3. 甚至可以真正做到链接载入完全由程序员在程序代码中控制。
    所有的函数本着“有需求才调入”的原则,于是大大节省了系统资源。

动态链接库的创建

 由于动态链接库函数的共享特性,它们不会被拷贝到可执行文件中。在编译的时候,编译器只会做一些函数名之类的检查。在程序运行的时候,被调用的动态链接库函数被安置在内存的某个地方,所有调用它的程序将指向这个代码段。因此,这些代码必须实用相对地址,而不是绝对地址。在编译的时候,我们需要告诉编译器,这些对象文件是用来做动态链接库的,所以要用地址不无关代码(Position Independent Code (PIC))。

对gcc编译器,只需添加上 -fPIC 标签,如: 
1.创建共享库 
     gcc -fPIC -c error.c                
     gcc -fPIC -c errorlog.c
     gcc -shared -o libapue.so error.o errorlog.o 
这样就创建了共享库! 
注意到最后一行,-shared 标签告诉编译器这是要建立动态链接库。这与静态链接库的建立很不一样,后者用的是 ar 命令。也注意到,动态链接库的名字形式为 “libxxx.so” 后缀名为 “.so”

2.编译共享库 
   
 使用动态链接库,首先需要在编译期间让编译器检查一些语法与定义。

 这与静态库的实用基本一样,用的是 -Lpath 和 -lxxx 标签。如:

 gcc file1.o file2.o -Lpath -lxxx -o program.exe

 编译器会先在path文件夹下搜索libxxx.so文件,如果没有找到,继续搜索libxxx.a(静态库)。

 在程序运行期间,也需要告诉系统去哪里找你的动态链接库文件。在UNIX下是通过定义名为 LD_LIBRARY_PATH 的环境变量 来实现的。只需将path赋值给此变量即可。csh 命令为:

 setenv LD_LIBRARY_PATH your/full/path/to/dll

 一切安排妥当后,你可以用 ldd 命令检查是否连接正常。

 ldd program.exe

 

如何才能让动态加载器发现库文件呢?有两种方法可以解决: 
     LD_LIBRARY_PATH 环境变量  
     /etc/ld.so.conf文件 
    1.环境变量 
       export LD_LIBRARY_PATH="dir$LD_LIBRARY_PATH" 
    2.修改/etc/ld.so.conf文件.位于/etc/ld.so.conf 
一般应用程序的库文件不与系统库文件放在同一个目录下,一般把应用程序的共享库文件放在/usr/local/lib下,新建一个属于自己的目录apue,然后把刚才libapue.so复制过去就行了
同时在/etc/ld.so.conf中新增一行: 
/usr/local/lib/apue

实例分析:
1、动态库的编译

下面通过一个例子来介绍如何生成一个动态库。这里有一个头文件:so_test.h,三个.c文件:test_a.c、test_b.c、test_c.c,我们将这几个文件编译成一个动态库:libtest.so。

so_test.h:

#include 
#include

void test_a();
void test_b();
void test_c();


test_a.c:

#include "so_test.h"
void test_a()
{
 printf("this is in test_a.../n");
}


test_b.c:
#include "so_test.h"
void test_b()
{
 printf("this is in test_b.../n");
}

test_a.c:

#include "so_test.h"
void test_c()
{
 printf("this is in test_c.../n");
}

将这几个文件编译成一个动态库:libtest.so
$ gcc test_a.c test_b.c test_c.c -fPIC -shared -o libtest.so

2、动态库的链接

在1、中,我们已经成功生成了一个自己的动态链接库libtest.so,下面我们通过一个程序来调用这个库里的函数。程序的源文件为:test.c。

test.c:

#include "so_test.h"
int main()
{
test_a();
test_b();
test_c();
return 0;

}

l 将test.c与动态库libtest.so链接生成执行文件test:

$ gcc test.c -L. -ltest -o test

l 测试是否动态连接,如果列出libtest.so,那么应该是连接正常了

$ ldd test

l 执行test,可以看到它是如何调用动态库中的函数的。
3、编译参数解析
最主要的是GCC命令行的一个选项:
-shared 该选项指定生成动态连接库(让连接器生成T类型的导出符号表,有时候也生成弱连接W类型的导出符号),不用该标志外部程序无法连接。相当于一个可执行文件

l -fPIC:表示编译为位置独立的代码,不用此选项的话编译后的代码是位置相关的所以动态载入时是通过代码拷贝的方式来满足不同进程的需要,而不能达到真正代码段共享的目的。

l -L.:表示要连接的库在当前目录中

l -ltest:编译器查找动态连接库时有隐含的命名规则,即在给出的名字前面加上lib,后面加上.so来确定库的名称

l LD_LIBRARY_PATH:这个环境变量指示动态连接器可以装载动态库的路径。

l 当然如果有root权限的话,可以修改/etc/ld.so.conf文件,然后调用 /sbin/ldconfig来达到同样的目的,不过如果没有root权限,那么只能采用输出LD_LIBRARY_PATH的方法了。
4、注意

调用动态库的时候有几个问题会经常碰到,有时,明明已经将库的头文件所在目录 通过 “-I” include进来了,库所在文件通过 “-L”参数引导,并指定了“-l”的库名,但通过ldd命令察看时,就是死活找不到你指定链接的so文件,这时你要作的就是通过修改 LD_LIBRARY_PATH或者/etc/ld.so.conf文件来指定动态库的目录。通常这样做就可以解决库无法链接的问题了。

  3: 如果出现下列错误
          ./test: error while loading shared libraries: libtest.so: cannot open   shared object file: No such file or directory
      解决方法:
       1: export LD_LIBRARY_PATH=DIR:$LD_LIBRARY_PATH 
       2: 修改文件/etc/ld.so.config文件,在末行加上你的库文件目录,最后,ldconfig刷新ld.so.cache文件即可。可以用strings命令查看ld.so.cache是否刷新:strings /etc/ld.so.cache | grep print
     
4:   ldd命令查看动态连接库
            
            linux-gate.so.1 =>  (0xb7f0e000)
            libprint.so => not found
            libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7d82000)
            /lib/ld-linux.so.2 (0xb7ef4000)
5 : nm查看程序中有那些符号
      
049f18 d _DYNAMIC
08049ff4 d _GLOBAL_OFFSET_TABLE_
080485cc R _IO_stdin_used
         w _Jv_RegisterClasses
08049f08 d __CTOR_END__
08049f04 d __CTOR_LIST__
08049f10 D __DTOR_END__
08049f0c d __DTOR_LIST__
080485ec r __FRAME_END__
08049f14 d __JCR_END__
08049f14 d __JCR_LIST__
0804a018 A __bss_start
0804a010 D __data_start
08048580 t __do_global_ctors_aux
08048450 t __do_global_dtors_aux

6: strip取出程序中符号
7: strings查看可执行文件中的文本信息

posted @ 2014-01-14 19:29 Enic 阅读(416) | 评论 (0)编辑 收藏

会遇到若干问题:
1.编译缺少lib,使用yum安装
2.没有设置prefix,不知道安装到那里
3.安装完成直接执行git无反应,需要建立软连接

make prefix=/usr/local all doc
make prefix=/usr/local install install-doc
wget http://git-core.googlecode.com/files/git-1.7.10.tar.gz
tar zxvf git-1.7.10.tar.gz
cd git-1.7.10
./configure --prefix=/usr/local/git
make
make install
git依赖zlib-devel,openssl-devel,perl,cpio,expat-devel,gettext-devel这些包,如果出错基本上也是这些包造成的。我在安装时出现了如下错误。
 
出现错误一:
usr/bin/perl Makefile.PL PREFIX='/usr/local/git' INSTALL_BASE='' --localedir='/usr/local/git/share/locale'
Can't locate ExtUtils/MakeMaker.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at Makefile.PL line 3.
BEGIN failed--compilation aborted at Makefile.PL line 3.
make[1]: *** [perl.mak] Error 2
make: *** [perl/perl.mak] Error 2
执行:
yum install perl-ExtUtils-MakeMaker package.
行进安装
出现错误二:
 /bin/sh: msgfmt: command not found
yum install gettext-devel
可解决!
为了省时间,你可以利用各distribution的包管理工具来一键安装。若是条件允许,从源代码安装有很多好处,至少可以安装最新的版本。Git 的每个版本都在不断尝试改进用户体验,所以能通过源代码自己编译安装最新版本就再好不过了。有些 Linux 版本自带的安装包更新起来并不及时,所以除非你在用最新的 distro 或者 backports,那么从源代码安装其实该算是最佳选择。
Git 的工作需要调用 curl,zlib,openssl,expat,libiconv 等库的代码,所以需要先安装这些依赖工具。在有 yum 的系统上(比如 Fedora)或者有 apt-get 的系统上(比如 Debian 体系),可以用下面的命令安装:
0. Git安装前环境配置:
    $ yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel 
    $ apt-get install libcurl4-gnutls-dev libexpat1-dev gettext libz-dev libssl-dev 
1. Git下载源:
    http://git-scm.com/downloads(official website)
    http://code.google.com/p/git-core 
    https://github.com/git/git  (大陆的朋友建议使用后俩个源下载)
2. 解压缩包并进入Git目录:
   $ sudo tar zxf git-1.8.0.tar.gz 
   $ cd git-1.8.0
3. 编译源码:
   $ sudo make prefix=/usr/local/git all doc
   // 这里同时指定all和doc这两个目标,指定doc是为了安装git的帮助文档到man手册里面,只指定all的话,默认并不包含git的帮助文档,这样在man手册中就查不到git的帮助。
*********************************************************************
在编译all目标时,可能会报下面的错:
      /bin/sh: curl-config: not found
      fatal error: openssl/ssl.h: No such file or directory
   这是因为git源码需要的一些开发包没有被安装。我是通过安装下面的包来解决这个问题的:
   $ sudo yum install libcurl4-openssl-dev
   网上有个方法是安装libssl-dev包,这个方法可以解决 fatal error: openssl/ssl.h: No such file or directory 的问题,但是/bin/sh: curl-config: not found问题还是存在,编译的时候还是编不过。在我的机子上,安装libcurl4-openssl-dev能同时解决这两个问题,安装libcurl4-openssl-dev时,会自动安装libssl-dev包。
在编译doc目标时,可能会报下面的错:
            /bin/sh: line 1: asciidoc: command not found
   这个包可以到这里下载并执行make(./configure ;make ;make install)常用方法安装http://sourceforge.net/projects/asciidoc
/bin/sh: line 1: xmlto: command not found 
   xmlto这个包不太好找,不过有adam在,这些都是浮云(呵呵)。下载地址:https://fedorahosted.org/releases/x/m/xmlto/,安装方法同asciidoc。
************************************************************************
4. 安装:
   $ sudo make prefix=/usr/local/git install install-doc
   // 这里同样,如果想要在man手册中看到git的帮助文档,需要额外安装,即上面的install-doc。如果只指定install目标的话,在man手册中是查不到git的相关命令帮助的。
5. 查看新安装的git版本号:
   $ ./usr/local/git/bin/git --version
   git version 1.8.0
6. 为了以后使用方便,我们这里做一个软连接:
   $ ln -s /usr/local/git/bin/* /usr/bin/
   
   
=================================================
极速安装git最新版(update 20131209):
$ git clone git://git.kernel.org/pub/scm/git/git.git
$ make prefix=/usr/local all        (编译)
$ sudo make prefix=/usr/local install       (安装)
=================================================
posted @ 2014-01-14 16:26 Enic 阅读(12388) | 评论 (0)编辑 收藏

yum install ibug
reboot以后就可以看到:

1.需要root权限,所以要用root登录 ,或su root

2.yum install "@Chinese Support"

3.exit

4.回到桌面,system->preferences->input method

5.如果没有,先注销一下。

6.按照提示添加输入法。

7.最后 再次注销,登录即可。


设置:

在linux CentOS中安装完中文输入法之后,还不能使用,必须进行相应的设置,就如同在windows中设置中文输入法一样,必须把刚刚安装的输入法添加爱到输入法列表中。

1、点击:系统---首选项---输入法

2、勾选启用输入法特性

3、点击首选输入法

     在常规选项卡中可以设置输入法切换的快捷键

4、点击输入法选项卡,选择汉语,在列表中选择拼音(当然,你会其他的输入法也可以选择其他的)

      点击添加,将选中的输入法添加到输入法列表

5、点击高级选项卡,勾选键盘布局、全局输入法设置。关闭。




1.需要root权限,所以要用root登录 ,或su root

2.yum install "@Chinese Support"

3.exit

4.回到桌面,system->preferences->input method

5.如果没有,先注销一下。

6.按照提示添加输入法。

7.最后 再次注销,登录即可。


设置:

在linux CentOS中安装完中文输入法之后,还不能使用,必须进行相应的设置,就如同在windows中设置中文输入法一样,必须把刚刚安装的输入法添加爱到输入法列表中。

1、点击:系统---首选项---输入法

2、勾选启用输入法特性

3、点击首选输入法

     在常规选项卡中可以设置输入法切换的快捷键

4、点击输入法选项卡,选择汉语,在列表中选择拼音(当然,你会其他的输入法也可以选择其他的)

      点击添加,将选中的输入法添加到输入法列表

5、点击高级选项卡,勾选键盘布局、全局输入法设置。关闭。



posted @ 2014-01-14 14:17 Enic 阅读(903) | 评论 (0)编辑 收藏

最优的设置应该是net方式,最简单的方式应该是是bridge方式。
net方式的优势在于不收host机器网络环境变化印象,这次是vm10下做的配置,修改以后发现都ping不通vm网关,但是机器相互可以ping

vmware三种网络连接上网设置:

虚拟机更改ip地址的命令:

sudo /root/bin/newIP  <new-AES-IP> <networkMASK> <Gateway> <DNServer>

1.bridge :  
默认使用vmnet0
将虚拟机的ip设置与主机同网段未使用ip,其余与主机相同:
例如主机ip是10.70.54.31,设置虚拟机ip为10.70.54.22。netmask,broadcast,gateway,dns都与主机相同即可实现虚拟机<--->主机 虚拟机<---->互联网 通信。

2.nat :
默认使用vmnet8
将虚拟机设置成使用dhcp方式上网,windows下选择"自动获取ip",linux下开启dhcp服务即可
也可以手动设置:
ip设置与vmnet8同网段,gateway设置成vmnet8的gateway(/etc/vmware/vmnet8/nat/nat.conf)中可以查到vmnet8的gateway,通常是xxx.xxx.xxx.2。
netmask,broadcast设置与vmnet8相同,dns设置与主机相同。
例如 vmnet8 ip:172.16.249.1 gw :172.16.249.2
虚拟机设置: ip :172.16.249.100  gw: 172.16.249.2

3.host-only :
默认使用vmnet1

将虚拟机ip设置与vmnet1同网段,gateway设置成vmnet1的ip,其余设置与vmnet1相同,dns设置与主机相同
例如 vmnet1 ip :172.16.245.1 
虚拟机设置: ip :172.16.245.100 gateway :172.16.245.1 
这样就实现了虚拟机<--->主机 通信,但是 虚拟机<--->互联网 仍无法通信

虚拟机与互联网通信: 
1.开启主机路由功能
2.设定iptables,使主机成为一台nat server
1. echo 1 >/proc/sys/net/ipv4/ip_forward 这样就主机就具有了路由功能
2. iptables -t nat -A POSTROUTING -o eth0 -s 172.16.245.0/24 -j MASQUERADE
这条规则意思是将来自172.16.245.0/24封包的来源ip伪装成eth0的ip,实现虚拟机与互联网通信
如果网络接口是ppp+或pppoe则需要修改成-o pppoe  
当然-s  172.16.245.0/24 也要根据实际情况修改

posted @ 2014-01-14 13:42 Enic 阅读(220) | 评论 (0)编辑 收藏

1.理解locale和export命令
2.了解怎么让bash登录以后自动执行一段命令


在/etc/profile文件里添加

source $HOME/.bashrc

 

总之就是为了在登录cygwin时,加载~/.bashrc


posted @ 2014-01-13 18:04 Enic 阅读(320) | 评论 (0)编辑 收藏

1. 在域里建立一个账户test

2. 在需要ssh登录的主机上,配置好cygwin和sshd.

3.使用mkpasswd -l > /etc/passwd 来建立local password条目,

3.是用mkpasswd -d -u 123456 >> /etc/passwd 在passwd里追加一个域用户. -d 表示domain

4.mkgroup -d >> /etc/group,把用户所在的组gid也添加进去.

5.运用mkpasswd来添加用户,本地的和域的都可以,用mkgroup添加用户相应的组信息.

6.域用户如果在本地组里,这样混合一起用是可以的啦.
posted @ 2014-01-13 17:36 Enic 阅读(175) | 评论 (0)编辑 收藏

现象:
切换到unicode编译以后发现款字符的中文全部无法输出,查询以后是Locale引起的,首先用SetLocal设置程序local发现无效,最后定位到log4cplus配置文件:
log4cplus.appender.complete.Locale=chs
这样设置之后发现尼玛还是不行,继续分析,发现是filename的中文部分被截断了。

然后对log4cplus的代码动手,__FILENAME__改成LOG4CPLUS_TEXT(__FILENAME__),修改一对错误之后发现勉强可以用了,但还是有缺陷,早日自己动手写才是王道,,,
posted @ 2014-01-13 09:54 Enic 阅读(1579) | 评论 (1)编辑 收藏

仅列出标题
共22页: First 9 10 11 12 13 14 15 16 17 Last