Veuillez indiquer la source lors de la réimpression : Compilez Tinyxml dans une bibliothèque statique sous Linux
Une application doit être exécutée sur un serveur Linux. Il ne peut pas être garanti que chaque serveur dispose des bibliothèques dont il dispose. L'application dépend, et je suis trop paresseux pour la compiler à chaque fois. Il n'est pas réaliste de l'installer sur chaque serveur, nous compilons donc toutes les bibliothèques utilisées par l'application dans des bibliothèques statiques et les lançons directement sur le serveur pour les exécuter. Ceci est un exemple d'application appelant le fichier de configuration XML et s'appuyant sur la bibliothèque tinyxml. Enregistrez-le sous forme de mémo.
1. Téléchargez la bibliothèque tinyxml directement depuis le site officiel, http://www.php.cn/.
2. Décompressez le package téléchargé. Je l'ai décompressé dans le répertoire de test et suis entré dans le répertoire du projet.
3. Utilisez l'éditeur vim pour modifier le Makefile :
Modifiez la ligne OUTPUT := xmltest en : OUTPUT := libtinyxml.a
Changez xmltest.cpp depuis SRCS := Supprimer tinyxml.cpp tinyxml-parser.cpp xmltest.cpp tinyxmlerror.cpp tinystr.cpp, commentez xmltest.o : tinyxml.h tinystr.h. Parce qu'il n'est pas nécessaire d'ajouter le programme de démonstration à la bibliothèque dynamique.
Modifiez ${LD} -o $@ ${LDFLAGS} ${OBJS} ${LIBS} ${EXTRA_LIBS} en : ${AR} $@ ${LDFLAGS} ${OBJS} ${LIBS} $ { EXTRA_LIBS}.
Enregistrez et quittez.
4. Exécutez la commande make pour compiler et le fichier libtinyxml.a sera généré dans le répertoire courant.
5. Appelez le test et créez un fichier test.cpp dans le répertoire courant avec le contenu suivant :
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 }
Créez un fichier test.xml avec le contenu suivant :
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>
Compilez le fichier courant et appelez la bibliothèque libtinyxml.a :
[root@server tinyxml]# g++ -o test test.cpp ./libtinyxml.a
Exécutez le programme compilé :
[root@server tinyxml]# ./test Persons Person 周星星 20 1
Mettez le test compilé et testez .xml vers un autre emplacement Il n'existe pas de bibliothèque tinyxml à Taiwan et l'exécution est réussie.
Ce qui précède est le contenu de la compilation de Tinyxml dans une bibliothèque statique sous Linux. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !