linuxtinyxml
‘壹’ linux下使用tinyXml报错error: ‘class TiXmlNode’ has no member named ‘LinkEndChid’。
额 看报错是说类没有成员LinkEndChid 你可以看看.h里的类声明 看看成员名具体是啥
‘贰’ 这个linux程序的Makefile疑问求解
你要读懂这个Makefile,要查两样东西,一样是gcc文档,一样是Makefile的文档。
先来说gcc的编译选项问题:
-Wall是做检查,比如语法错误啊,指针不一致,参数没有用到之类的错误
关于 -Wno-format,在GCC的编译选项中有以下解释,你可以读一读,具体的方法你去man gcc,可以查到相关信息
-Wno-format-extra-args
If -Wformat is specified, do not warn about excess arguments to a
"printf" or "scanf" format function. The C standard specifies that
such arguments are ignored.
Where the unused arguments lie between used arguments that are
specified with $ operand number specifications, normally warnings
are still given, since the implementation could not know what type
to pass to "va_arg" to skip the unused arguments. However, in the
case of "scanf" formats, this option will suppress the warning if
the unused arguments are all pointers, since the Single Unix
Specification says that such unused arguments are allowed.
-Wno-format-zero-length (C and Objective-C only)
If -Wformat is specified, do not warn about zero-length formats.
The C standard specifies that zero-length formats are allowed.
关于-g,用于GDB调试,这个不用再说了吧。
-DDEBUG
实际上是用-D定义了一个名叫DEBUG的宏,初始值为1。
所以你的Makefile下面会有这么一段
ifeq (YES, ${DEBUG})
CFLAGS := ${DEBUG_CFLAGS}
CXXFLAGS := ${DEBUG_CXXFLAGS}
LDFLAGS := ${DEBUG_LDFLAGS}
else
CFLAGS := ${RELEASE_CFLAGS}
CXXFLAGS := ${RELEASE_CXXFLAGS}
LDFLAGS := ${RELEASE_LDFLAGS}
endif
表示如果是YES的值与DEBUG的值相等的话(不加$()指数字的值相等)用于调试手段,则会调用调试用的相关变量,如果是正式发行版,则会用REALEASE的相关变量,
你的第二个问题是关于Makefile的函数的,
basename表示取前缀函数,比如basename a.out 返回值为a,
而addsuffix是加后缀的函数addsuffix .o,a 返回值为a.o
不过建议你去看看Makefile的手册。
‘叁’ Linux字符串截取几种方法
简单介绍下Shell字符串截取的详细方法,如截取指定字数、按指定的字符串截取、按指定要求分割。
一、Linux shell 截取字符变量的前8位,有方法如下:
‘肆’ Linux 下C的字符串截取
先查找内容字符串都开始位置,就是 "<CUST_NAME>" 的下一个位置,记下来。然后找 </CUST_NAME>的开始位置,记下来,然后取字串。
‘伍’ 如何在centos7上安装mysql
【安装MySQL】
由于MySQL被Oracle收购了,所以CentOS 7的yum源中不再有正常安装mysql时的mysql-sever文件,需要去官网上下载
# wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
# rpm -ivh mysql-community-release-el7-5.noarch.rpm
# yum install mysql-community-server
上面的具体版本大家可以到MySQL网站的下载页面,找到Yum Repository页面,查找最新的版本名称,替换上面的版本名称即可。
成功安装之后重启mysql服务
# service mysqld restart
【安装MySQL Workbench,失败】
执行yum install mysql-workbench-community
系统进行各种检查后,提示没有安装包。
在MySQL网站找了半天,找不到安装包下载。最后还是在网上搜到了安装包的获取方法:
http://cdn.mysql.com/Downloads/MySQLGUITools/mysql-workbench-community-6.3.4-1.el7.x86_64.rpm
同样,具体的版本号用的是根据执行yum install mysql-workbench-community的提示版本号。
然后开始等待下载。
完成后,再执行上面的安装命令,开始安装。发现,仍然不对。
仔细研究报错,提示缺少proj和tinyxml。
再查下来,发现tinyxml不在官方yum上,需要配置EPEL源。
【配置EPEL(企业版Linux软件附加包)】
执行yum install epel-release.noarch
安装EPEL后执行yum repolist,如果显示的信息里面有epel,则安装成功。
然后尝试执行 yum install tinyxml,能够安装。
【安装MySQL Workbench】
重新执行yum install mysql-workbench-community
系统提示依赖的软件列表,并询问是否下载安装。感觉有门儿了。
确认后,系统下载依赖的包,然后安装。
安装完成后,在“应用程序”菜单的“编程”下,会出现MySQL Workbench的图标。
大功告成!
‘陆’ c++程序员需要学什么
c++程序员需要学以下9点主要知识:
1. 语言基础
我们要成为一个程序员,学的东西会很多很杂,但是最开始一定要从语言开始学习。
学习语言的目的就是打好基础,特别是自学的,一定规划好自己的学习路线,一步一个脚印学习下去。学习语言最关键的莫过于多读书,但不能随便找一本C++书籍就去读了。
2. GUI
C++方面的GUI库有很多种,比如MFC、WTL、wxWidgets、QT。
这些GUI库都各有自己的特点,其实我们只要先了解一种就可以了,只要深入了解了一种GUI库。
需要的时候再学习其他的就够了,本质上都差不多,很快就可以上手了。
MFC虽然设计上有很多问题,但是作为入门还是不错的,而且学习资料很多,碰到问题也好解决。
3. 数据结构和算法
很多人都忽视了数据结构和算法方面的知识,尤其是一些编程语言的库做得非常好;几乎不需要自己去实现一些数据结构和算法,导致现在很多程序员不重视甚至忽略这方面的知识。
但是,当我们想让我们的程序跑得更快、内存占用更少的时候,这些知识就非常非常重要了。很多程序员都是刚开始的时候不重视这些,但是工作几年后又来补习这些知识。
最开始可能不需要学习的太深入,但是基本的数据结构和算法一定要知道。
4. 数据库
学习数据库的基础知识,并且掌握一种数据库使用。
推荐使用Oracle,而且最好不要用一些封装好的接口。
而应该直接用Oracle提供的数据库API,可能对数据库了解的会更深入。
5. 并行
CPU主频已经不能遵循摩尔定律了,现在CPU发展的趋势是多核心。无论是多线程,还是多进程,都是为了更好地利用CPU的性能,提供更好的用户体验。这就要求我们如果要写出高效的应用程序,必然要涉及到并行计算。多花些精力在并行计算上吧,一定会有丰富的回报。
6.网络编程
这里所指的网络编程是指socket编程。
现在C++的应用很多都是在做服务器开发,如何开发一个高并发、大吞吐量、高稳定性的服务器就是我们要考虑的了。
7. 设计模式
设计模式不是具体的技术,更多的是如何让代码更容易阅读、更好扩展、更容易使用。
8. 库的使用
C++标准库仅仅提供了一些很基本的功能,所以我们经常会引入一些第三方库。最着名的恐怕就是被称为准标准库的boost库,它提供了我们编程中用到的各方面的技术,文本处理、算法、网络、多线程、图像处理等等,几乎无所不包。
其它也有一些专注于某一方面的库,比如ACE是网络通信方面的,TinyXML是解析xml的,OGRE是图形渲染方面的。
9. 操作系统的知识
程序员需要了解的操作系统知识和普通用户是不一样的一个高手是需要深入了解操作系统的方方面面,而不是停留在使用层面。
至于应该了解哪些知识,Windows上的去看《Windows核心编程》,Linux的去看《深入理解Linux内核》,应该可以知道自己应该学什么了。
以上都是学习C++游戏开发的前期准备,也就是打好基础。上面都是基本功,看起来有点多,但是磨刀不误砍柴工。这对于你后面学习游戏开发有非常大的帮助。总而言之,道路还是很艰辛的,且行且珍惜!!!
‘柒’ ubuntu14怎样编译和调试linux0.11
编译64位程序,不一定要编译机器是64位的,但是32位机器默认安装的gcc编译环境还是不能用来编译64位程序。编译64位程序,需要加上-m64编译器参数,默认安装的gcc已经支持该参数,但是缺少64位机器指令相关的文件,所以不能编译,会出现下面的错误
In file included from /usr/include/features.h:378,
from /usr/include/assert.h:37,
from ../../../include/tinyxml/tinystr.h:42,
from ../../../src/tinyxml/tinystr.cpp:32:
/usr/include/gnu/stubs.h:9:27: error: gnu/stubs-64.h: 没有那个文件或目录
这时候需要安装 gcc所有支持文件 sudo apt-get install gcc-multilib
将会安装下列额外的软件包:
cpp-4.4 g++-4.4 gcc-4.4 gcc-4.4-base gcc-4.4-multilib lib64gcc1 lib64gomp1 libc6-amd64 libc6-dev-amd64 libgcc1 libgomp1
‘捌’ linuxmint 17 输入法安装
sudo add-apt-repository ppa:fcitx-team/nightly
sudo apt-get update
sudo apt-get install fcitx
安装完成后注销,重新登陆。
在软件管理器中搜索安装输入特定语言所需的组件:
(1)简体中文拼音:fcitx-sunpinyin(Sunpinyin输入法引擎的fcitx封装)或fcitx-googlepinyin或fcitx-pinyin。
(2)简体中文五笔:fcitx-table-wubi(五笔输入法)或fcitx-table-wbpy(五笔拼音输入法)。
(3)繁体中文:fcitx-table-cangjie。
(4)通用的输入法码表: fcitx-table*,如:fcitx-table-erbi(二笔输入法)。
将fcitx设为默认:
LinuxMint默认的输入法框架是IBUS,所以要将默认输入法框架改为fcitx。打开终端,输入“sudo
im-config”,回车,输入用户密码回车后即可打开输入法配置对话窗口,单击“OK”,在下一个弹出的窗口中单击“Yes”,在接下来弹出的窗口中选中“fcitx”,单击“OK”。注销重新登录后即可。
一般情况下系统会自动将fcitx设为开机启动,否则,在“系统设置-开机和关机-自动启动”中添加fcitx。
如果fcitx无法正常使用,在软件管理器(mintInstall)中检查一下fcitx的依赖是否安装齐全(下面的包是针对KDE桌面的,Mint17尚未出KDE版的,所以搜索不到的忽略即可):dialog,fcitx-bin,fcitx-config-
common,fcitx-config-gtk,fcitx-data,fcitx-frontend-all,fcitx-frontend-
gtk2,fcitx-frontend-gtk3,fcitx-frontend-qt4,fcitx-libs,fcitx-mole-
dbus,fcitx-mole-kimpanel,fcitx-mole-lua,fcitx-mole-x11,fcitx-
moles,fcitx-ui-classic,im-config,libopencc1,libpresage-
data,libpresage1,libtinyxml2.6.2,presage。此外建议安装的软件包:fcitx-tools,fcitx-
m17n,kdebase-bin,plasma-widgets-addons。
‘玖’ linux tinyxml2怎么编译
1.首先,要到官网上去把tinyxml库下载下来,网址为:点击打开链接:http://sourceforge.net/projects/tinyxml/
2.把下载的tinyxml库解压缩,我这里是解压缩到/opt 目录下
3.进入到解压缩目录下,我们会发现Tinyxml在Windows 下是使用微软的VS 来生成的库,因为其中有tinyxml.sln,tinyxml_lib.vcxproj,tinyxmlSTL.vcxproj等文件,当然,Tinyxml是开源的,所以它也有一个Makefile,用来生成Linux下的Tinyxml库。整个Tinyxml源码项目其实是由2个头文件和一个4个C++源文件(.cpp)组成:tinystr.h,tinyxml.h,tinystr.cpp,tinyxml.cpp,tinyxmlerror.cpp,tinyxmlparser.cpp。其中还有一个xmltest.cpp文件,只是一个测试代码,有兴趣的话,大家可以打开研究它。好了,现在介绍怎么修改它的Makefile:
(1)使用vim或者其他的编辑器打开Makefile文件
(2)将其中的注释为Targets of the build的下一行OUTPUT := xmltest一行修改为:OUTPUT := libtinyxml.a
(3)将其中的注释为Source files 的下一行SRCS:=tinyxml.cpp tinyxml-parser.cpp xmltest.cpp tinyxmlerror.cpp tinystr.cpp中的xmltest.cpp删除,因为它只是一个测试源文件,不需要编译。
(4)将其中的Output的下一行的${LD} -o $@ ${LDFLAGS} ${OBJS} ${LIBS} ${EXTRA_LIBS}修改为:${AR} $@ ${LDFLAGS} ${OBJS} ${LIBS} ${EXTRA_LIBS}。大致改成这样
- ${OUTPUT}:${OBJS}
- ${AR}$@${LDFLAGS}${OBJS}${LIBS}${EXTRA_LIBS}
- #${LD}-o$@${LDFLAGS}${OBJS}${LIBS}${EXTRA_LIBS}
(5)将Makefile的倒数第二行 xmltest.o:tinyxml.h tinystr.h,注释掉,因为不需要将演示程序添加到静态库中。然后保存退出。
(6)在终端下进入Makefile所在目录,执行make命令编译,即可在Makefile所在目录下生成libtinyxml.a文件。
4.接下来就可以使用这个静态库了:$ g++ -o xmltest xmltest.cpp libtinyxml.a 注意:将使用的静态库放在源文件后面即可,如果静态库文件不在当前目录,应该使用它的绝对路径或者用g++的参数-L来指定路径,因为编译器默认在当前目录下先查找指定的库文件。
修改后的Makefile (v 1.0.1) 记录如下:
[plain] view plain print?
#****************************************************************************
#
#MakefileforTinyXmltest.
#LeeThomason
#www.grinninglizard.com
#
#ThisisaGNUmake(gmake)makefile
#****************************************************************************
#,orNOotherwise
DEBUG:=NO
#,orNOotherwise
PROFILE:=NO
#TINYXML_USE_.NO,thenSTL
#willnotbeused.YESwillincludetheSTLfiles.
TINYXML_USE_STL:=NO
#****************************************************************************
CC:=gcc
CXX:=g++
LD:=g++
AR:=arrc
RANLIB:=ranlib
DEBUG_CFLAGS:=-Wall-Wno-format-g-DDEBUG
RELEASE_CFLAGS:=-Wall-Wno-unknown-pragmas-Wno-format-O3
LIBS:=
DEBUG_CXXFLAGS:=${DEBUG_CFLAGS}
RELEASE_CXXFLAGS:=${RELEASE_CFLAGS}
DEBUG_LDFLAGS:=-g
RELEASE_LDFLAGS:=
ifeq(YES,${DEBUG})
CFLAGS:=${DEBUG_CFLAGS}
CXXFLAGS:=${DEBUG_CXXFLAGS}
LDFLAGS:=${DEBUG_LDFLAGS}
else
CFLAGS:=${RELEASE_CFLAGS}
CXXFLAGS:=${RELEASE_CXXFLAGS}
LDFLAGS:=${RELEASE_LDFLAGS}
endif
ifeq(YES,${PROFILE})
CFLAGS:=${CFLAGS}-pg-O3
CXXFLAGS:=${CXXFLAGS}-pg-O3
LDFLAGS:=${LDFLAGS}-pg
endif
#****************************************************************************
#Preprocessordirectives
#****************************************************************************
ifeq(YES,${TINYXML_USE_STL})
DEFS:=-DTIXML_USE_STL
else
DEFS:=
endif
#****************************************************************************
#Includepaths
#****************************************************************************
#INCS:=-I/usr/include/g++-2-I/usr/local/include
INCS:=
#****************************************************************************
#
#****************************************************************************
CFLAGS:=${CFLAGS}${DEFS}
CXXFLAGS:=${CXXFLAGS}${DEFS}
#****************************************************************************
#Targetsofthebuild
#****************************************************************************
OUTPUT:=libtinyxml.a
all:${OUTPUT}
#****************************************************************************
#Sourcefiles
#****************************************************************************
SRCS:=tinyxml.cpptinyxmlparser.cpptinyxmlerror.cpptinystr.cpp
#Addonthesourcesforlibraries
SRCS:=${SRCS}
OBJS:=$(addsuffix.o,$(basename${SRCS}))
#****************************************************************************
#Output
#****************************************************************************
${OUTPUT}:${OBJS}
${AR}$@${LDFLAGS}${OBJS}${LIBS}${EXTRA_LIBS}
#${LD}-o$@${LDFLAGS}${OBJS}${LIBS}${EXTRA_LIBS}
#****************************************************************************
#commonrules
#****************************************************************************
#
%.o:%.cpp
${CXX}-c${CXXFLAGS}${INCS}$<-o$@
%.o:%.c
${CC}-c${CFLAGS}${INCS}$<-o$@
dist:
bashmakedistlinux
clean:
-rm-fcore${OBJS}${OUTPUT}
depend:
#makedepend${INCS}${SRCS}
tinyxml.o:tinyxml.htinystr.h
tinyxmlparser.o:tinyxml.htinystr.h
tinyxmlerror.o:tinyxml.htinystr.h
‘拾’ linux下怎么使用tinyxml库
首先 你去报错的对应位置查看 是否 真有这几个库文件,因为有些东西你自己安装的话,不一定是在这些引用目录下!