ubuntu 下 eclipse配置libxml2库

关于ubuntu 下libxml2的安装:

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

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

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

所以这里我就不再多说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的头文件路径以及库路径和库名

然后就是在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公社上找到的

1/********************************** 2 created: 2014/05/12 3 filename: CreateXmlFile.c 4 auther: wang kai 5 depend: libxml2.lib 6 purpose: 创建一个xml文件 7 **********************************/ 8 9#include<stdio.h> 10#include<libxml/parser.h> 11#include<libxml/tree.h> 12 13int main(int argc, char **argv) { 14 //Define document pointer 15 xmlDocPtr doc = xmlNewDoc(BAD_CAST "1.0"); 16 17 //Define node pointer 18 xmlNodePtr root_node = xmlNewNode(NULL, BAD_CAST "root"); 19 20 //Set the root element of the document 21 xmlDocSetRootElement(doc, root_node); 22 23 //Create child nodes directly in the root node 24 xmlNewTextChild(root_node, NULL, BAD_CAST "newnode1", 25 BAD_CAST "newnode1 content"); 26 xmlNewTextChild(root_node, NULL, BAD_CAST "newnode2", 27 BAD_CAST "newnode2 content"); 28 29 //Create a new node 30 xmlNodePtr node = xmlNewNode(NULL, BAD_CAST "node2"); 31 //Create a new text node 32 xmlNodePtr content = xmlNewText(BAD_CAST "NODE CONTENT"); 33 34 //Add a new node to parent 35 xmlAddChild(root_node, node); 36 xmlAddChild(node, content); 37 //Create a new property carried by a node 38 xmlNewProp(node, BAD_CAST "attribute", BAD_CAST "yes"); 39 40 //Create a son and grandson node element 41 node = xmlNewNode(NULL, BAD_CAST "son"); 42 xmlAddChild(root_node, node); 43 xmlNodePtr grandson = xmlNewNode(NULL, BAD_CAST "grandson"); 44 xmlAddChild(node, grandson); 45 xmlAddChild(grandson, xmlNewText(BAD_CAST "THis is a grandson node")); 46 47 //Dump an XML document to a file 48 int nRel = xmlSaveFile("CreatedXml.xml", doc); 49 if (nRel != -1) 50 printf("一个xml文档被创建,写入 %d 个字节\n", nRel); 51 52 //Free up all the structures used by a document,tree included 53 xmlFreeDoc(doc); 54 //printf("Hello World!\n"); 55 return 0; 56}

Makefile

===========

在eclipse中的编译运行就不说了,主要说一下我的makefile例子:

1# 功能:libxml2 的Makefile测试 2# 3# 作者:小代码 4# 5#时间:20141123日 星期日 19:17:20 CST 6 7 8PROGRAM=test 9 10# 指定编译器 11CC=gcc 12# 指定编译选项 13CFLAGS=-c -Wall `xml2-config --cflags` 14# 指定连接时的库 15LDADD=`xml2-config --libs` 16 17# 指定删除命令及其选项 18RM=rm -rf 19 20 21 22# 默认目标 23all:${PROGRAM} 24 25# 创建主程序 26${PROGRAM}:test.o 27 ${CC} -o $@ $^ ${LDADD} 28 29test.o:test.c 30 31 32.PHNOY:clean run 33 34# 清除中间文件及生成的可执行程序和生成的xml文件 35clean: 36 -${RM} ${PROGRAM} *.o CreatedXml.xml 37# 运行程序 38run: 39 ./${PROGRAM}

此Makefile来自gtk+的中文FAQ,原文:

14.3 如何使用make工具? 2 3下面是一个非常简单的编译GTK+程序的Makefile: 4 5 # basic GTK+ app makefile 6 SOURCES = myprg.c foo.c bar.c 7 OBJS = ${SOURCES:.c=.o} 8 CFLAGS = `gtk-config --cflags` 9 LDADD = `gtk-config --libs` 10 CC = gcc 11 PACKAGE = myprg 12 13 all : ${OBJS} 14 ${CC} -o ${PACKAGE} ${OBJS} ${LDADD} 15 16 .c.o: 17 ${CC} ${CFLAGS} -c $< 18 19 # end of file 20 21如果想进一步的了解make工具,你可以察看相应的man或者是info文件.

我把gtk-config替换为xml2-config,基本上没有遇到什么问题

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

KVM调整cpu和内存

一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid