ubuntu 下 eclipse配置libxml2库

关于ubuntu 下libxml2的安装:

我在安装之前,当然也不例外的云百度上寻找了一番,于是我找到了如下文章:

http://www.linuxidc.com/Linux/2014-05/101925.htm

不得不说,这个文章写的真心好.当我在ubuntu的软件中心搜索libxml2时,我发现其实libxml2已经安装了

192247_cDpV_1442002.png

所以这里我就不再多说libxml2的安装了


关于IDE的选择

这里不想说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就废了


关于在eclipse ide for c/c++ 中配置第三方库

其实我们在写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中配置第三方库的方法:

得到方该第三方法的头文件路径,并在相应位置添加之

得到方尺第三方库的库文件名和路径,并在相应位置添加之

设置编译命令


在eclipse中添加libxml2库

于是经过我的尝试,我终于在ubuntu下完成了eclipse中配置libxml2的探索

使用xml2-config --cflags和xml2-config --libs命令得到libxml2的头文件路径以及库路径和库名

200148_ybeC_1442002.png

然后就是在eclipse中设置了,具体步骤:

新建一个C工程,右键->Properties->C/C++ General->Paths and Symbols

选择右边的includes中的GNU C,点击右边的Add,添加xml2-config --cflags的输出,比如我这里是:/usr/include/libxml2,其实你的机器上也应该一样,然后记得选择那个 Add to all configurations选项

195945_FsM0_1442002.png

然后选择Libraries,添加xml2-config --libs的输出,这里就不再截图了[之前这里写错了,现在上图]

211522_ZPjK_1442002.png

再就是选择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;
}


Makefile

在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,基本上没有遇到什么问题




转载于:https://my.oschina.net/iamhere/blog/337858

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值