Please indicate the source when reprinting: Compile Tinyxml into a static library under Linux
An application needs to be run on a Linux server. It cannot be guaranteed that every server has the libraries that the application depends on, and I am too lazy to compile it every time. It is not realistic to install it on every server, so we compile all the libraries used by the application into static libraries and throw them directly to the server to run. This is an example of an application calling an xml configuration file that relies on the tinyxml library. Record it as a memo.
1. Download the tinyxml library directly from the official website, http://www.php.cn/.
2. Unzip the downloaded package. I unzipped it to the test directory and entered the project directory.
3. Use the vim editor to modify the Makefile file:
Modify the OUTPUT := xmltest line to: OUTPUT := libtinyxml.a
Change xmltest.cpp from SRCS:= Delete tinyxml.cpp tinyxml-parser.cpp xmltest.cpp tinyxmlerror.cpp tinystr.cpp, comment out xmltest.o: tinyxml.h tinystr.h. Because there is no need to add the demo program to the dynamic library.
Modify ${LD} -o $@ ${LDFLAGS} ${OBJS} ${LIBS} ${EXTRA_LIBS} to: ${AR} $@ ${LDFLAGS} ${OBJS} ${LIBS} $ {EXTRA_LIBS}.
Save and exit.
4. Execute the make command to compile, and the libtinyxml.a file will be generated in the current directory.
5. Call the test and create a test.cpp file in the current directory with the following content:
view sourceprint?01 #include "tinyxml.h" 02 #include "tinystr.h" 03 #include <iostream> 04 using namespace std; 05 06 int main() 07 { 08 //创建一个XML的文档对象。 09 TiXmlDocument *myDocument = new TiXmlDocument("test.xml"); 10 myDocument->LoadFile(); 11 12 //获得根元素,即Persons。 13 TiXmlElement *RootElement = myDocument->RootElement(); 14 15 //输出根元素名称,即输出Persons。 16 cout << RootElement->Value() << endl; 17 18 //获得第一个Person节点。 19 TiXmlElement *FirstPerson = RootElement->FirstChildElement(); 20 //输出接点名Person 21 22 cout << FirstPerson->Value() << endl; 23 //获得第一个Person的name节点和age节点和ID属性。 24 TiXmlElement *NameElement = FirstPerson->FirstChildElement(); 25 TiXmlElement *AgeElement = NameElement->NextSiblingElement(); 26 TiXmlAttribute *IDAttribute = FirstPerson->FirstAttribute(); 27 28 //输出第一个Person的name内容,即周星星;age内容,即20;ID属性,即1。 29 cout << NameElement->FirstChild()->Value() << endl; 30 cout << AgeElement->FirstChild()->Value() << endl; 31 cout << IDAttribute->Value() << endl; 32 33 return 0; 34 }
Create a test.xml file with the following content:
view sourceprint?01 <Persons> 02 <Person ID="1"> 03 <name>周星星</name> 04 <age>20</age> 05 </Person> 06 <Person ID="2"> 07 <name>白晶晶</name> 08 <age>18</age> 09 </Person> 10 </Persons>
Compile the current file, Call the libtinyxml.a library:
[root@server tinyxml]# g++ -o test test.cpp ./libtinyxml.a
Execute the compiled program:
[root@server tinyxml]# ./test Persons Person 周星星 20 1
Put the compiled test and test.xml to another library without tinyxml, and the execution is successful .
The above is the content of compiling Tinyxml into a static library under Linux. For more related content, please pay attention to the PHP Chinese website (www.php.cn)!