Bitte geben Sie beim Nachdruck die Quelle an: Kompilieren Sie Tinyxml in eine statische Bibliothek unter Linux
Eine Anwendung muss auf einem Linux-Server ausgeführt werden. Es kann nicht garantiert werden, dass jeder Server über die Bibliotheken verfügt Die Anwendung hängt davon ab, und ich bin zu faul, sie jedes Mal zu kompilieren. Es ist nicht realistisch, sie auf jedem Server zu installieren. Daher kompilieren wir alle von der Anwendung verwendeten Bibliotheken in statische Bibliotheken und werfen sie zur Ausführung direkt auf den Server. Dies ist ein Beispiel für eine Anwendung, die eine XML-Konfigurationsdatei aufruft, die auf der TinyXML-Bibliothek basiert. Zeichnen Sie sie als Memo auf.
1. Laden Sie die TinyXML-Bibliothek direkt von der offiziellen Website http://www.php.cn/ herunter.
2. Entpacken Sie das heruntergeladene Paket in das Testverzeichnis und geben Sie das Projektverzeichnis ein.
3. Verwenden Sie den vim-Editor, um das Makefile zu ändern:
Ändern Sie die Zeile OUTPUT := xmltest in: OUTPUT := libtinyxml.a
Ändern Sie xmltest.cpp aus SRCS:= Löschen tinyxml.cpp tinyxml-parser.cpp xmltest.cpp tinyxmlerror.cpp tinystr.cpp, xmltest.o auskommentieren: tinyxml.h tinystr.h. Denn das Demoprogramm muss nicht zur dynamischen Bibliothek hinzugefügt werden.
Ändern Sie ${LD} -o $@ ${LDFLAGS} ${OBJS} ${LIBS} ${EXTRA_LIBS} zu: ${AR} $@ ${LDFLAGS} ${OBJS} ${LIBS} $ { EXTRA_LIBS}.
Speichern und beenden.
4. Führen Sie den Befehl make zum Kompilieren aus. Die Datei libtinyxml.a wird im aktuellen Verzeichnis generiert.
5. Rufen Sie den Test auf und erstellen Sie im aktuellen Verzeichnis eine test.cpp-Datei mit folgendem Inhalt:
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 }
Erstellen Sie eine test.xml-Datei mit folgendem Inhalt:
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>
Kompilieren Sie die aktuelle Datei und rufen Sie die Bibliothek libtinyxml.a auf:
[root@server tinyxml]# g++ -o test test.cpp ./libtinyxml.a
Führen Sie das kompilierte Programm aus:
[root@server tinyxml]# ./test Persons Person 周星星 20 1
Führen Sie den kompilierten Test aus und testen Sie ihn .xml an einen anderen Ort verschieben In Taiwan gibt es keine TinyXML-Bibliothek und die Ausführung ist erfolgreich.
Das Obige ist der Inhalt der Kompilierung von Tinyxml in eine statische Bibliothek unter Linux. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!