我在安装之前,当然也不例外的云百度上寻找了一番,于是我找到了如下文章:
http://www.linuxidc.com/Linux/2014-05/101925.htm
不得不说,这个文章写的真心好.当我在ubuntu的软件中心搜索libxml2时,我发现其实libxml2已经安装了
所以这里我就不再多说libxml2的安装了
这里不想说shell + vi/vim/emacs这种开发方式,我是菜鸟,我不会这种
JAVA有Eclipse,C#有VS,些语言都有一个相当完善的IDE,对我们写程序的人来说,那是一大助力.
对于 C/C++来说,可选择的IDE还是非常的多的,就我知道就有:
Visul Studio:MS的,我只用过2010版本的,虽然不能跨平台,但是另上VSX后,那速度,有如神助
CodeBlocks:小,快,不占资源,总之很好,如果不是它的代码提示和自动完成不好,我绝对会选择这个
KDeveloper:据说很强大,不过我没用过
netbeans:用过一次,没有搞定,放弃之...
...
...
...
最后我的选择:
Eclipse + CDT:eclipse在写JAVA程序的时候,不说是一个最佳选择也差不了太多了,就是有点占用资源
其实我最开始用的就是CodeBlocks,这个东西真心好,但是从第一次使用,我就发现它的代码提示那是相当不好.后来偶尔的一次,我用了一下eclipse来写C,我发现它的代码提示,第三方插件,自动完成,都是比较容易掌握的,最重要的是它的代码编辑器那是相当的强大,我现在写纯C/C++程序,就是在eclipse中新建一个C/C++项目,然后用make + gcc编译,在shell中运行.当然还只是一些非常简单的makefile的编写
想对自己和新手说的话:
不论选择什么IDE,合适就好,最重要的是学会一个语言的核心,不能离了IDE就废了
其实我们在写C/C++项目时,不仅仅要到标准库,还要用到很多其他库,比如我想写界面,要用到gtk+,比如我要用XML文件来配置我的软件,此时就需要C语言的第三方库libxml2吧[能自己用C语言了解析XML文档的高手请略过],只不过我的程序中不想用mysql,oracle等数据库,而是用XML文件来代替数据库软件了.不论是因为什么原因吧,我们总要在eclipse中添加第三方库.下面说一下我的过程:
我在使用libxml2之前,搜索过怎样在eclipse中配置gtk,于是我找到了这个:
http://www.2cto.com/kf/201207/142182.html
在这篇文章中,使用了两个命令:
pkg-config --cflags gtk+-2.0 > include.txt
pkg-config --libs gtk+-2.0 > libs.txt
那个 > 是重定向的意思,不明白的可以自动略过,我看了几次,总结了一下在eclipse for c/c++ + gcc中配置第三方库的方法:
得到方该第三方法的头文件路径,并在相应位置添加之
得到方尺第三方库的库文件名和路径,并在相应位置添加之
设置编译命令
于是经过我的尝试,我终于在ubuntu下完成了eclipse中配置libxml2的探索
使用xml2-config --cflags和xml2-config --libs命令得到libxml2的头文件路径以及库路径和库名
然后就是在eclipse中设置了,具体步骤:
新建一个C工程,右键->Properties->C/C++ General->Paths and Symbols
选择右边的includes中的GNU C,点击右边的Add,添加xml2-config --cflags的输出,比如我这里是:/usr/include/libxml2,其实你的机器上也应该一样,然后记得选择那个 Add to all configurations选项
然后选择Libraries,添加xml2-config --libs的输出,这里就不再截图了[之前这里写错了,现在上图]
再就是选择C/C++ Build,对command设置了,添加内容是:
`xml2-config --cflags --libs`
注意:两边是反引号[Tab上面的那个],不是单引号
这里是修改两个地方,都是GCC C Complier 的command选项,Debug 和Realease的command都要设置
但是在截图的时候,总是不完整,等我找个比较好的截图软件再上图
这里可能会和那个eclipse 配置GTK的有点出入,没有库路径,不过我看没有就没有设置,也成功了,在配置GTK时也是一样,具体原因我还不知道,可能是ubuntu已经把libxml2的路径添加到环境变量了吧.
然后就是把ubuntu下安装libxml2的那个文章中的代码添加到项目中测试之,如果没有问题,那么在你的项目文件夹下,应该会有一个XML文件
这里我贴一个代码例子,其实也是在Linux公社上找到的
/********************************** created: 2014/05/12 filename: CreateXmlFile.c auther: wang kai depend: libxml2.lib purpose: 创建一个xml文件 **********************************/ #include<stdio.h> #include<libxml/parser.h> #include<libxml/tree.h> int main(int argc, char **argv) { //Define document pointer xmlDocPtr doc = xmlNewDoc(BAD_CAST "1.0"); //Define node pointer xmlNodePtr root_node = xmlNewNode(NULL, BAD_CAST "root"); //Set the root element of the document xmlDocSetRootElement(doc, root_node); //Create child nodes directly in the root node xmlNewTextChild(root_node, NULL, BAD_CAST "newnode1", BAD_CAST "newnode1 content"); xmlNewTextChild(root_node, NULL, BAD_CAST "newnode2", BAD_CAST "newnode2 content"); //Create a new node xmlNodePtr node = xmlNewNode(NULL, BAD_CAST "node2"); //Create a new text node xmlNodePtr content = xmlNewText(BAD_CAST "NODE CONTENT"); //Add a new node to parent xmlAddChild(root_node, node); xmlAddChild(node, content); //Create a new property carried by a node xmlNewProp(node, BAD_CAST "attribute", BAD_CAST "yes"); //Create a son and grandson node element node = xmlNewNode(NULL, BAD_CAST "son"); xmlAddChild(root_node, node); xmlNodePtr grandson = xmlNewNode(NULL, BAD_CAST "grandson"); xmlAddChild(node, grandson); xmlAddChild(grandson, xmlNewText(BAD_CAST "THis is a grandson node")); //Dump an XML document to a file int nRel = xmlSaveFile("CreatedXml.xml", doc); if (nRel != -1) printf("一个xml文档被创建,写入 %d 个字节\n", nRel); //Free up all the structures used by a document,tree included xmlFreeDoc(doc); //printf("Hello World!\n"); return 0; }
在eclipse中的编译运行就不说了,主要说一下我的makefile例子:
# 功能:libxml2 的Makefile测试 # # 作者:小代码 # #时间:2014年 11月 23日 星期日 19:17:20 CST PROGRAM=test # 指定编译器 CC=gcc # 指定编译选项 CFLAGS=-c -Wall `xml2-config --cflags` # 指定连接时的库 LDADD=`xml2-config --libs` # 指定删除命令及其选项 RM=rm -rf # 默认目标 all:${PROGRAM} # 创建主程序 ${PROGRAM}:test.o ${CC} -o $@ $^ ${LDADD} test.o:test.c .PHNOY:clean run # 清除中间文件及生成的可执行程序和生成的xml文件 clean: -${RM} ${PROGRAM} *.o CreatedXml.xml # 运行程序 run: ./${PROGRAM}此Makefile来自gtk+的中文FAQ,原文:
4.3 如何使用make工具? 下面是一个非常简单的编译GTK+程序的Makefile: # basic GTK+ app makefile SOURCES = myprg.c foo.c bar.c OBJS = ${SOURCES:.c=.o} CFLAGS = `gtk-config --cflags` LDADD = `gtk-config --libs` CC = gcc PACKAGE = myprg all : ${OBJS} ${CC} -o ${PACKAGE} ${OBJS} ${LDADD} .c.o: ${CC} ${CFLAGS} -c $< # end of file 如果想进一步的了解make工具,你可以察看相应的man或者是info文件.我把gtk-config替换为xml2-config,基本上没有遇到什么问题