1. 在openSUSE中安装vtk和itk

    真是泪奔,昨天刚装好openSUSE虚拟机,装了几个软件后,提示硬盘空间不足,然后就进入半死机状态了, 唉,当初只给它分配了10GB空间,想不到丫的是个空间大户,哭了,昨天的辛苦工作又白费了。但是还是把那些软件的安装过程记录下,省得每次都Google浪费时间。 导师主要是怕其他Linux的发行版中没有需要的东西,所以他建议把代码放在openSUSE里面运行,当然要运行之前, 一些必要的软件要安装,就是:QT、KDevelop、cmake、vtk、itk。由于openSUSE默认安装时有一些必要的软件没有安装, 所以在安装上述软件之前,确保以下软件已经安装在机子上了(在YAST2里): automake autoconf g++(gcc套件) libtool 其中KDevelop和cmake都可以从YAST2里面下载,所以较为方便,其他三个分别从官网下载即可,当然我们这里用的都是opensource的版本。 QT的安装http://www.qtcn.org/bbs/read.php?tid=22600 进入下载页面:选择下载用于 Linux/X11 的 Qt 库 4.6.2 (160 Mb) # tar -zxvf qt-everywhere-opensource-src-4.6.2.tar.gz # cd qt-everywhere-opensource-src-4.6.2 //这里可以把文件夹重命名为简单一点的名字,比如qt # ./configure # gmake # gmake install qt-x11 被安装到此目录下/usr/local/Trolltech/Qt-4.6.2 设定环境变量,在自己的家目录下的.profile或在/etc/profile中,添加下列代码(推荐在/etc/profile中): QTDIR=/usr/local/Trolltech/Qt-4.6.2 PATH=$QTDIR/bin:$PATH MANPATH=$QTDIR/doc:$MANPATH //这个不设也可以 LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH export QTDIR PATH MANPATH LD_LIBRARY_PATH (另:装了几次QT,每次装完再重启后系统就变慢了,郁闷,不知道什么原因) 使用KDevelop的步骤http://www.100ksw.com/jsj/linux/xxjc/178745.shtml: 新建一个工程 写代码 Build->Run Automake & friends Build->Run Configure Build->Compile File Build->Build Project Build->Execute Program(Shift+F9) 注意:在 4.Build->Run Configure 这一步中很有可能会出现这个问题configure: error: C++ compiler cannot create executables 这是kdevelop自身环境变量的设置问题。   在kdevelop中开启Project Options,然后在Configure Options的内容中,分别确认C和c++使用compiler,在各自的Compiler command(cc)和Compiler command(cxx)中分别填入gcc和g++.在对话框里面按下OK之后, IDE会问你是否要重建,选rerun即可。 (还有可参考此文) vtk和itk的安装(以前自己整理的,参考了网上的一些文章): itk篇: 在http://www.itk.org/ITK/resources/software.html中下好源码包 如果你想在全局安装,也就是安装在/opt或者/usr目录下,那么需要root权限.这里假设你要安装在自己的家目录下。 新建一个文件夹itk,再在这个目录下创建两个文件夹,分别是src,bin 把1中的压缩包解压到src目录下,这里假设解压出来的是InsightToolkit-3.16.0文件夹 cd进入到bin目录下,运行ccmake ../src/InsightToolkit-3.16.0/ 按c,把BUILD_EXAMPLES和BUILD_TESTING个OFF掉,不然耗时过长,个人认为可以把BUILD_SHARED_LIBS ON,主要是预防一下,要是有用到再重来一次就悲剧了。若没出错则继续按g就退出了 make (这个时间长点) make install (这个很重要,切记切记,网上很多都没有这步) 搞定以后就可以测试是否安装成功,步骤如下: 在/src/Example/Installation目录下,有测试的程序HelloWorld.cxx,带有CMakeLists.txt,把这两个 文件拷出来到一个文件夹中(可以随便新建一个) 终端下cd 进入到这个文件夹中,运行 ccmake ./ 这个可以设置itk的路径,在ITK_DIR这个选项填入你的bin路径,即类似XXX/itk/bin 按c,无出错,再按g退出 cmake . make ./HelloWorld 如果输出正常就说明安装成功了。 (补充一个,不知是否必要 ,反正没损伤: export LD_LIBRARY_PATH=/usr/local/lib/InsightToolkit 还有在/etc/ld.so.conf里也添加路径 /usr/local/lib/InsightToolkit ) (发觉这篇文章讲得也蛮清楚的:) vtk篇: 在http://www.vtk.org/VTK/resources/software.html中下好Source and Data两个包 新建一个文件夹vtk,把上面两个包解压缩到此处,同时再建一个文件夹bin. 在终端下cd到这个bin目录下 运行 ccmake ../VTK (这个VTK就是刚才从Source中解压出来的,文件名最好不要变)根据提示进行操作,一般默认的就可以了,下面是一些选项的解释: build_examples:询问是否编译vtk中的例子 build_testing:就是vtk开发者用来测试vtk代码的一些例子,我们常通过它们和Example下的例子学习vtk,是否编译它们,看个人喜好 build_shared_libs:如果设置为off,则只声称lib文件,用于c++开发是够了;如果设置为on则将多声称dll文件,在同时要使用python脚本调用vtk程序时,就必须编译生成动态库,要设置为on cmake_install_prefix:这个比较重要,就是以后要安装vtk的路径。有些人又要问,我编译完了不就可以用vtk了吗,为什么还要安装?对,不安装其实可以,安装的好处就是可以从 1G多的文件中提取出.h .lib .dll等精华,安装在指定目录下,并修改系统环境变量 vtk_data_root:一般地,cmake可以自己找到vtkdata的路径,但如果没有,把vtkdata路径填上即可,告诉cmake,vtk需要的数据都在哪里 按c进行配置,没出错,按g就可以退出来了。 make (花时间的说) sudo make install (sudo就是说要在root权限下,按提示输入密码即可) sudo export LD_LIBRARY_PATH=/usr/local/lib/vtk-5.4 往/etc/profile里添加如下查找路径: C_INCLUDE_PATH=/usr/local/include/vtk-5.4:$C_INCLUDE_PATH export C_INCLUDE_PATH CPLUS_INCLUDE_PATH=/usr/local/include/vtk-5.4:$CPLUS_INCLUDE_PATH export CPLUS_INCLUDE_PATH 这是因为编译时可能会出现无法找到头文件的问题,而C/C++的头文件查找路径包含有/usr/local/include,但不会继续进入子文件中,即不会去查找/usr/local/include/vtk-5.4.最后在/etc/ld.so.conf里也添加路径/usr/local/lib/vtk-5.4. 暂时就这些,继续搞系统!

    2010/01/25

  2. openSuSE设置VMWARE的网络连接

    一不小心把自己机子上的openSUSE弄垮了,搞了一上午还是不行–菜鸟就是菜鸟。没法,只能装个虚拟机了-导师说最好在openSUSE下吧代码运行起来。 痛苦啊,上次在本地机子上装openSUSE的时候就费了好一阵时间–因为还要装一些特定的软件,make的时间老长了的说。 这次的虚拟机安装还算顺利,就是上不了网,弄了好久,终于根据网上的说明成功搞定,为了避免以后忘记, 转载于此,原文请见:http://www.5dlinux.com/article/1/2007/linux_8865.html ———————–华丽的分割线———————————————— 这两天在XP上装个虚拟机(SUSE),但SUSE不能上网,网上搜索了下结合自己的实际总结下: 使用hostonly模式共享上网 在VM»settings里设置网卡为hostonly模式,使得网络只由宿主承担,虚拟机只是和宿主位于另一个虚拟的局域网。 在windows下的网络连接中,vmnet1是hostonly的接口,而Vmnet8是就是我们要使用的NAT的网络接口。因此将我们原来可用的“本地连接”对相应虚拟机网卡vmnet1共享,这里如果选择了hostonly必须对vmnet1共享(很重要),具体方式是右键单击“本地连接”,选择“属性”,再选择“高级”,勾选共享 实际上此时宿主相对虚拟机的ip地址为192.168.0.1,因此将Linux的ip设置为192.168.0.XXX,XXX不等于1,然后DNS和网关地址都为192.168.0.1。这样共享上网便设置成功. 重起服务 service network restart 现在我的SUSE可以上网了,但XP依旧不能使用SAMBA和FTP去连SUSE,郁闷中(我在公司的PC都可以连接,但同样的方法在虚拟机上好像不行了)

    2010/01/24

  3. 《C语言解惑》小笔记

    今天花了一下午的时间把这本书看完了,也就150来页,当做是对C的一次复习,当然也发现了以前薄弱的地方。薄薄的一本书,对每一段代码都讲解的很详细,而且针对的都是C程序员较易犯错的地方,用的都是简单的例子,推荐初、中级C程序员好好研读(PS:每一页的插图都还很有意思,都是一些经典的视错觉图像). 在对替换字符串里的宏进行扩展之前,C语言预处理器将先对“#”和“##”操作符进行处理。“##”操作符将合并它的两个操作数。 宏越简单越好。如果无法得到一个简单的宏,就应该把它定义成一个函数。 char *c[]={"ENTER","NEW","POINT","FIRST"}; char **cp[]={c+3,c+2,c+1,c}; char ***cpp=cp; **++cpp *--*++cpp+3 *cpp[-2]+3 cpp[-1][-1]+1 如上,是关于指针操作的,如果能正确理解,对掌握指针的用法很有帮助。 *c[]将被求值为一个char,所以c[]会指向一个char数组,而c是一个以char指针为元素的数组.c中的元素被初始化为分别指向char数组”ENTER”、”NEW”、”POINT”和”FIRST”。 **cp[]将被求值为一个char,*cp[]是一个char指针,而cp[]是一个指向一个char指针的指针。cp是一个以char指针为元素的数组。cp的元素被初始化为分别指向c的各个元素。 ***cpp将被求值为一个char,**cpp指向一个char,*cpp指向一个char指针,而cpp指向一个char指针的指针。 对上面四个式子的分析如下: 先对cpp进行递增,再使用该指针 先对cpp进行递增并通过该指针找到cp[2],然后对cp[2]进行递减并通过该指针找到c[0],最后给c[0]里的地址加上3。 先从cpp开始根据偏移量-2找到cp[0],再沿着该指针找到c[3],最后给c[3]里的地址加上3. 先从cpp开始根据偏移量-1找到cp[1],再从cp[1]开始根据偏移量-1找到c[1],最后给c[1]里的地址加上1. 以上四个式子的结果分别是:POINT ER ST EW

    2009/12/31 C/C++

  4. 年终小结

    一年马上又要过去了,以前从没写过总结,只在大脑中短暂自我评价而已,这次是第一次通过写的形式表现出来,也是我第一次写技术博客,其实也不算技术啦,只是想要记录一下自己的历程,希望有所收获,毕竟自己太不擅长于文字了,呵呵。 上半年–研一的下半学期–主要还是上课的说。其实老实说,整个研一上课几乎没学到什么,可能是我的专业跨度太大的缘故吧–以前念的是海洋。另外一个原因,就是大部分老师都很水,扯得多,教得少。本来还想自学来着,可发觉时间都耗费在完成课业上–毕竟还得通过,不看不学的话等于自挖坟墓。整个研一貌似废掉了,当时导师也正好整一年在国外,唉,但是从入门的角度看,还行,也长了一点见识,可这对于研究生来说实在是有点浪费–读研只有三年啊,哪里有时间让你一步一步领进门。 研一过了之后的暑假,我就呆在学校里了,没回家,从图书馆借了好多书(话说看完的没几本)想要一口气把它们消化掉。现在想来真是太天真了,而且当时因为动力不足,还看了好多的动漫,《海贼王》还有《网球王子》就是那段时间一直看的,直到最新的一集,想想,那花了多少时间···不过心里倒是挺满足的额,呵呵。当然我还是有学习的啦,暑假的时候大部分时间花在C++ STL上了,看了侯捷/孟岩合译的那本(《C++标准程序库:自修教程与参考手册》(Nicolai M.Josuttis著), 终于把那本大部头从头到尾看了一遍,获益良多(就是实践经验少了点)。还有读了Linux方面的书,接触了Python,学习了《UML精粹》(不过现在不知道用在何处,只获得了个印象),还有Scott Meyers的《Effective C++》和《More Effective C++》,其余的还有: 《Java编程思想》,我看的是中译版的,不知道是不是实力不够还是翻译的读的不舒服,读了将近一半,还是晕乎乎的,直到书到期还掉。研一也有看《Java核心技术》,但老是不得要领,当然与C/C++相似的部分那没什么难度。虽然网上对这两个书的评价不错,但好书也要给对的人看,否则是事半功倍啊。 《Python语言入门》(第三版好像),通过这本书走进Python的世界,学习新东西总是让人兴奋的。 《汇编语言编程艺术》,看汇编主要是为了看Linux的源码做准备,于是在网上找别人推荐的汇编方面的书籍,看到了这本。于是从图书馆借了就读了起来,将近一半直到到期,却感觉不是在汇编,而是HLA,听类似C的,但我要的是纯汇编的,时间不允许我学完HLA后在过渡到汇编,于是乎,又无情的浪费了一些时间鸟。 《超越Java》,这本书主要是拿来当技术小说看的,蛮有意思的。 《正则表达式必知必会》,拿来当入门书在适合不过了,简单又实用。 《编程高手箴言》,书名倒挺唬人的,看了前面两三章,涉及到windows内部,不懂,然后是没时间,又拿去还了。 《代码阅读方法与实践》,这本书主要还是讲C的,针对的是开放源码,讲的东西看起来都懂,收获不怎么明显,可能代码的阅读量不足的缘故吧。 《C++编程思想,卷一》,这个得说下,翻译得实在不怎么样,因为读得太不顺了,一句话我都要斟酌好久才能明白他的意思。话说卷二还没看完。 《深入浅出MFC:使用Visual C++5.0 & MFC 4.2》,本来说windows下编程这本应该得看的说。 《经济学基础》,(英) 大卫·伯格, (美) 斯坦雷·费希尔, 卢迪戈·多恩布什著 张旭明, 罗宁译。被誉为”经济学圣经的那本,主要是想了解点经济常识,只看了前面两三章。 还借了好多书,有点根本没看,有的只瞄了了几眼,没兴趣。 对了,想起来了,上学期我们有一门课叫《计算理论》的,应该是计算机科学的基石吧,有点意思,就是有点那,什么时候能再捧起这本书啊。。。。。。 /———————————————-华丽的分割线—————————————————————–/ 上研二,由于每个人都得当一门课的助教,我一口气选了三门,算法、数据结构还有操作系统,这三门都是专业核心基础课,我也想学下,所以都选了,就目前的结果来看,确实受益匪浅,很高兴选对了,就是改作业烦点,呵。由于学校实行万恶的奖学金制度,研二的奖学金没得到,关于这个制度的水分不想谈了,反正就是失败鸟。 这学期我的Linux和Python继续跟进,看《鸟哥的Linux私房菜》,还有《Dive into Python》,还借了好多书(上面两本都还没看完),我发觉我有借书综合征,每每看到别人推荐的好书都会想要去借,不管是不是有时间去读。而且我的导师也回来了,开始派发任务,以前得闲的时间渐渐少了,书也可能看不了许多了,毕竟要毕业是要有paper的说,开始熬吧。 说道借书,这学期借的很大一部分是助教相关课程的,—我也要学嘛,而且还不能误人子弟,得在学生问我问题之前先学会咯。再加上其他琐碎的事,这学期眼看着也要过去了,遗憾好多应该读的书没有看,当然有些时间是我主动“浪费”的,我的爱好可是包括电影、美剧还有动漫的哦,–好像给自己开脱来着。 下面罗列的这些书,都是想看而没看,或者看了一点的,或是以后要看的,依个人兴趣而言的,希望有时间慢慢都把他们消灭: 《Lucene+nutch搜索引擎开发》,对搜索有点兴趣,嘿嘿。 《贯通Java Web轻量级应用开发:JSP+Struts+Hibernate+Spring实例精解》,看Java的主要是想给以后的工作多一个选项。 《Programming pearls=编程珠玑》,借了好久一直没看,可惜鸟。 《Python网络编程基础》,对Python着迷那会儿,以为有时间来着,哎。 《FreeBSD操作系统设计与实现》,主要是研究OS想看的,还是先看Linux的和Windows的吧。 《UNIX环境高级编程》,想要走Linux的路,这本书貌似必看的吧。 《C专家编程.第2版》,关于C的这本得看。 《你的灯亮着吗?:发现问题的真正所在》,这本书看了。) 还有一些经典的,就不罗列了,先把这几本还了吧。其他的抓紧。 总的说来,自己确定的方向是Linux下的编程之路,具体怎么走还没什么样子,导师给的方向是医学图像处理,搞研究嘛,可行。 第一次写这么多,看来我废话蛮多的吗!

    2009/12/27