剝離掉所有不必要的代碼之後簡單的程序,這是一個拒絕編譯準系統版本:不能編譯使用的libxml ++,因爲glibmmconfig.h沒有找到
#include <iostream>
#include <libxml++/libxml++.h>
using namespace std;
int main (int argc, char *argv[]) {
cout << "Hello, World!" << endl;
return 0;
}
我使用的是先進的即Fedora的yum將這些文件放在/usr/include/libxml++-2.6/libxml++中。最初,編譯器甚至找不到libml ++/libxml ++。h,因爲Fedora的yum將這些文件放在/usr/include/libxml++-2.6/libxml++中。所以我通過創建符號鏈接/ usr/include/libxml ++到/usr/include/libxml++-2.6/libxml++來解決這個問題。已停止編譯器抱怨找不到的libxml ++小時,但隨後,在的libxml ++。h對行
#include <ustring.h>
再次編譯找不到。所以我再次創建了一個從/ usr/include/glibmm到/usr/include/glibmm-2.4/glibmm的符號鏈接,這是ustring.h實際駐留的地方。現在
編譯器已經停止抱怨ustring.h,但在ustring.h第一(實際)線
#include <glibmmconfig.h>
,編譯器無法找到。
glibmmconfig.h的實際位置是/usr/lib64/glibmm-2.4/include。但我不想改變ustring.h。
有沒有辦法解決我的問題,而不必不斷創建符號鏈接等?
在此先感謝您的幫助。
編輯
我能夠避開我的問題與下列編譯器選項:
`pkg-config --cflags --libs glibmm-2.4 libxml++-2.6`
感謝jpalecek爲指向的方式,但我不得不尋找一些更多的,直到我能夠解決我的問題。
雖然這些編譯器選項編譯上面的簡單程序,他們編譯失敗的libxml++ tutorial page教程:
#include <iostream>
#include <libxml++/libxml++.h>
#include <string.h>
using namespace std;
int main (int argc, char *argv[]) {
string FilePath = "SampleXMLDocument.xml";
try {
xmlpp::DomParser Parser;
Parser.set_substitute_entities();
Parser.parse_file (FilePath);
cout << "Successfully parsed XML file" << endl;
} catch (const exception& excp) {
cout << "Exception caught: " << excp.what() << endl;
}
return 0;
} // End main()
這一次,我收到了一堆錯誤類似如下:
等。
我想我的搜索仍在繼續。
您使用的是哪個平臺/發行版? – sinelaw 2012-04-19 22:21:07
Fedora 16,正如帖子中提到的那樣。 「uname -a」的輸出是「Linux localhost.localdomain 3.3.2-1.fc16.x86_64#1 SMP Sat Apr 14 00:31:23 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux」 – Shredderroy 2012-04-19 22:22:26
對不起,我錯過了。 – sinelaw 2012-04-19 22:25:13